TAB-komplettering, budgetöversikt, köp och säker administration ovanpå ledgerctl
[2026-07-24 Fri]
larin är den användarvänliga
terminalkonsumenten för Larin. Den använder ledgerctl:s versionsmärkta JSON-API och har
ingen egen ekonomisk motor.
Det betyder att larin:
merchant-db.json eller
envelopes.conf själv,ledgerctl göra
validering, preview och apply,användare
│
▼
larin ── JSON subprocess API ──► ledgerctl ──► hledger + arbetsyta
Terminalklienten kompletterar de andra konsumenterna:
| Konsument | Användning |
|---|---|
| Emacs | Full kontrollpanel, budgetadministration och analys |
| Webb | Statisk, skrivskyddad vy |
| Larin CLI | Portabel vardagsklient i terminal och över SSH |
Kör från en katalog som innehåller ledgerctl.conf:
cd ~/budget
larinOm larin körs direkt ur
projektträdet:
~/Projects/Larin/bin/larinDu kan också ange arbetsytan explicit:
larin --workspace ~/budget statusSökordningen för arbetsytan är:
--workspace KATALOG,LARIN_WORKSPACE,ledgerctl.conf uppåt från
aktuell katalog.Själva upptäckten och valideringen görs genom ledgerctl workspace locate --format json. När
arbetsytan är fastställd installerar Larin ett runtime-skydd som
blockerar direkt filåtkomst i arbetsytan. Klienten kan därför inte råka
ta en genväg förbi JSON-kontrakten.
ledgerctl-programmet kan väljas med
--ledgerctl eller LARIN_LEDGERCTL. När klienten körs ur källträdet
används normalt projektets bin/ledgerctl
automatiskt.
larin utan underkommando öppnar en
kommandoprompt:
Larin
=====
status Visa budget
översikt Förstå vart pengarna gick
köp Registrera köp
doctor Kör Budget Doctor
merchants Lista merchants
merchant+ Lägg till merchant
kuvert Lista kuvert
kuvert+ Lägg till kuvert
avsluta Avsluta
Skriv ett kommando; TAB kompletterar.
larin>
Skriv början av ett kommando och tryck TAB:
larin> sta<TAB>
larin> status
Både svenska och engelska namn fungerar. Sifferkommandon finns kvar för muskelminne, men ordkommandon med TAB-komplettering är den rekommenderade vägen.
larin status
larin status --month 2026-07
larin budget status --month 2026-07larin status utan månad visar status
för alla perioder som motorn returnerar. Rubriken visas då som Alla perioder. Med --month visas en månadsspecifik översikt.
Det korta aliaset finns kvar:
larin budget --month 2026-07budget fungerar alltså både som
statusalias och som kommandogrupp med status och doctor.
Belopp, saldo och ekonomiska tillstånd kommer direkt från ledgerctl budget status --format json.
Terminalklienten räknar inte om siffrorna.
larin insights --month 2026-07 --months 12
# Svenskt alias:
larin översikt --month 2026-07Detta är Larins samlade ekonomiöversikt. Fas 3 visar:
Alla belopp, andelar och rangordningar kommer från ledgerctl budget insights --format json.
Terminalklienten använder bara Unicode- eller ASCII-staplar för
presentation. Jämförelser, medianer och budgetavvikelser och
återkommande mönster räknas alltid av ledgerctl.
En möjlig abonnemangskandidat är inte ett automatiskt påstående. Larin visar vilka signaler som finns — månadsrytm, stabilt belopp, en betalning per månad och stabil betalningsdag — så att du själv kan granska kostnaden.
larin doctor
larin budget doctorBåda formerna visar samma rapport. larin budget utan underkommando visar
fortfarande budgetstatus; doctor är ett
riktigt underkommando i budgetgruppen.
Kommandot visar den skrivskyddade Budget Doctor-rapporten. Om
rapporten innehåller health-check-fel bevarar larin motorns felstatus i processens exitkod. En
rapport med fel är alltså fortfarande en korrekt diagnostikrapport.
larin purchaseeller:
larin köpKlienten frågar efter:
Merchantprompten har TAB-komplettering över mänskliga shortcuts och visningsnamn från Merchant API:t:
Merchant (shortcut eller namn, TAB kompletterar): ue<TAB>
Bankalias används endast av importmotorn och visas inte som mänskliga kommandon.
larin purchase \
--merchant ica \
--amount 243,50 \
--date 2026-07-22 \
--note "Matinköp"Merchant får vara:
Standard är pending. Använd --cleared
när köpet redan är verifierat:
larin purchase --merchant ica --amount 243,50 --clearedVarje köp går genom samma säkra livscykel:
bygg request
│
▼
Purchase API preview
│ visa journalpost, budgetpåverkan och dubbletter
▼
användarbekräftelse
│
▼
samma request + request_digest + revision + apply
Visa endast preview:
larin purchase \
--merchant ica \
--amount 243,50 \
--preview-onlyVerkställ den visade previewn utan en andra terminalfråga:
larin purchase \
--merchant ica \
--amount 243,50 \
--yes--yes hoppar inte över preview. Det
hoppar bara över den efterföljande bekräftelsefrågan.
larin merchants
larin merchant list
larin handlare listaListan hämtas från Merchant API:t och visar normalt namn, shortcut, standardkonto och permanent merchant-id.
larin merchant addSvenska alias:
larin handlare skapaKlienten frågar normalt efter:
expenses:,Kända expense-konton erbjuds med TAB-komplettering. Merchant-ID föreslås från namnet men kan granskas innan preview.
larin merchant add \
--name "Uppsala English Bookshop" \
--category expenses:hobbies:books \
--shortcut ueb \
--alias "THE ENGLISH BOOK" \
--country SE--alias och --shortcut får upprepas:
larin merchant add \
--name "Exempelbutik" \
--category expenses:shopping:other \
--alias "EXEMPELBUTIK UPPSALA" \
--alias "EXEMPELBUTIK WEB" \
--shortcut ex \
--shortcut exempelVisa endast Merchant API:ts preview:
larin merchant add \
--name "Exempelbutik" \
--category expenses:shopping:other \
--preview-onlyVid apply skickas exakt samma request tillbaka med den revision som motorn returnerade i previewn.
larin envelopes
larin envelope list
larin kuvert listaListan kommer från Envelope API:t och visar namn, kuvert-id och budgetkonto.
larin kuvert addeller:
larin envelope addDu anger:
expenses:-konton.I den interaktiva prompten anges ett konto i taget. TAB kompletterar
konton som motorn redan exponerar, men ett nytt expenses:-konto får skrivas fritt. Tom rad
avslutar kontolistan efter minst ett konto.
larin kuvert add \
--label "Kläder" \
--id clothes \
--account expenses:shopping:clothes \
--account expenses:clothing--account får upprepas.
Visa endast preview:
larin kuvert add \
--label "Kläder" \
--id clothes \
--account expenses:shopping:clothes \
--preview-onlyEnvelope API:t bygger en staged version av envelopes.conf och auto.journal och kör konfigurations- och
hledgerkontroller innan något får skrivas. CLI:t redigerar aldrig
filerna självt.
Lägg till konton i ett befintligt kuvert:
larin envelope update groceries \
--add-account expenses:restaurants \
--add-account expenses:fikaDu kan även byta etikett eller ta bort kontorötter:
larin envelope update groceries \
--label "Mat och restaurang" \
--remove-account expenses:food \
--preview-onlyKonto-flaggorna får upprepas. Ledgerctl validerar den slutliga
kuvertmodellen, regenererar auto.journal i
staging och publicerar båda filerna atomiskt.
För många otäckta kategorier används motorns interaktiva batchassistent:
ledgerctl suggest-envelopesDen har TAB-komplettering och en enda avslutande preview; Larin CLI behöver inte själv läsa routes eller kuvertfiler för att ge denna hjälp.
Direktkommandona kan användas utan huvudprompt:
larin --workspace ~/budget status --month 2026-07
larin --workspace ~/budget merchants
larin --workspace ~/budget kuvert listaFör mutationer bör script normalt använda --preview-only först och därefter ett
uttryckligt --yes endast när previewn
redan är granskad i det avsedda flödet.
Utdata är avsedd för människor. Program som behöver stabilt
maskinformat ska anropa ledgerctl --format json direkt.
Starta Larin CLI mot en helt påhittad och temporär arbetsyta:
./demo/demo.sh cliDirektkommandon:
./demo/demo.sh cli status --month 2026-07
./demo/demo.sh cli doctor
./demo/demo.sh cli merchants
./demo/demo.sh cli purchase
./demo/demo.sh cli merchant add --preview-only
./demo/demo.sh cli kuvert add --preview-onlyÄndringarna försvinner när containern avslutas.
Kontrollera:
pwd
find .. -name ledgerctl.conf -printAnge sedan arbetsytan explicit:
larin --workspace /sökväg/till/budget statuscommand -v ledgerctl
larin --ledgerctl ~/Projects/Larin/bin/ledgerctl statusTAB-komplettering kräver en interaktiv terminal och Pythons readline-modul. Klienten fungerar fortfarande
med vanlig inmatning om readline inte finns.
Kör motsvarande ledgerctl-kommando med
--format json och granska den råa utdatan.
Konsumenten ska stoppa i stället för att gissa när ett versionsmärkt
kontrakt inte matchar förväntningarna.
consumers/cli/run-tests.shTesterna använder en falsk ledgerctl-process och verifierar bland
annat:
period: null,