An agent, an API, and a gate between them.
The whole system is four things. This is where each one sits, and what it refuses to do.
- 01
A book appears
One click creates a private book — a Beancount ledger behind an HTTP API on its own machine. No server to run, no container, no Fava to secure.
What the API is → - 02
You point something at it
A chat bot we host, the Claude plugin with your own key, or any MCP client. The bot is the one with nothing to install; the plugin is the one that costs you no credits.
The three ways in → - 03
You talk
“Here is August.” “What did I spend on infra in Q2?” “Book this receipt.” The agent does the double-entry. You never type a posting.
What happens to a statement → - 04
The gate decides
Every write runs bean-check before it commits. Unbalanced is refused, not saved. Ambiguous is flagged, not guessed. Then it is a git commit with a diff.
History and undo →
You own it like a repository — because it is one.
Every other accounting tool keeps your history in a database you rent access to. This keeps it in files you can read, grep and diff, in a format that outlives any vendor. Including us.
It is just text
A plain .beancount file. Nothing proprietary, nothing to decode, a format grep can read in 2050.
Versioned in git
Every entry — yours or the agent’s — is a commit. Full history, and a one-line revert.
Refused, not flagged
An entry that does not balance never lands. The ledger cannot be left in a state that does not add up.
Serious under the hood
Multi-currency, cost basis, lots, balance assertions. Beancount’s full model, on every plan.
Readable in a browser
Balance sheet, income statement and journals behind your login, read-only.
Sleeps when idle
Your book auto-stops when you are away and starts on the next request. That is how the price stays this low.
Start with a free book.
No card. Provisioned in seconds, and it does not expire into a worse version of itself.