I hate QuickBooks Online, so I cloned it

  /   5 minutes   /   tech   small business   ai   rust   wanderbooks  

TL;DR: I built wanderbooks. It's a free, open source, formally verified double-entry accounting engine. The only way to change your books is by talking to an AI (Claude Code or Codex) over MCP. The way you look at your books is a simple, fast, read-only viewer. No subscription. No account. Your books are a folder you own. The code is on GitHub at swaits/wanderbooks, and I'm looking for dogfooders and developers.


How this started

A while back I started following ArtCraft, from the folks at storytold. If you haven't seen it, they've been cloning big, expensive desktop software, the kind of stuff from Adobe, Microsoft, and Autodesk, with an AI-driven pipeline that checks itself against the original.

Watching that, my first thought was: cool, we are finally getting freed from these hostage-feeling subscription services. Especially me, as a Linux user, where a lot of that software was never an option to begin with.

My second thought was: holy crap, it's all egui/eframe! I'm a big Rust fan, and I was stoked to see it powering real, serious desktop apps.

My third thought was the dangerous one. What else could we clone?

The answer came instantly. QuickBooks Online.

I hate QBO

I'm not going to be measured about this. I hate QBO. I hate the UI. I hate the complexity. I hate the forms on top of forms on top of forms. I hate everything about it. And most of all, I hate the price.

QBO rents you access to your own financial history. It raises the rent every year. It makes leaving painful. And after all that, you still do the bookkeeping yourself, one screen at a time.

Meanwhile, I spend all day working with an AI that can read my email, reason about a P&L, and explain a 1099 threshold better than most humans I know. Why am I filling out forms?

The obvious idea, and why it's not enough

The obvious idea is "just have the AI do your books." Hand Claude a spreadsheet and a pile of receipts, and let it go.

Don't. An LLM is a fantastic bookkeeper and a terrible ledger. It'll be right 99 times, and then on the 100th it'll quietly round something, drop a line, or "fix" a posted entry by editing it in place. In accounting, quietly wrong is the worst kind of wrong.

So the real problem isn't getting an AI to do bookkeeping. It's building books that are impossible to quietly get wrong, no matter who, or what, is doing the bookkeeping.

The model

Here's what I landed on. Two halves, with a hard line between them.

Talk to change. The only way to mutate anything is through the engine's MCP interface. MCP is the standard way tools like Claude Code and Codex plug into other software. Your AI drafts entries, attaches receipts, and runs reports by calling the engine's tools, and the engine enforces accounting law:

  • Every entry balances exactly. Money is exact decimal, never floating point.
  • Posted entries are permanent. Corrections are reversing entries, so history shows exactly what changed and why.
  • Receipts are required over a threshold you set, and that's enforced by the server, not left to the AI's judgment.
  • The source of truth is an append-only, hash-chained journal. The database is a disposable projection rebuilt from it and checked against it. Tamper with anything and it notices.
  • Nothing posts without a preview and your OK.

Look to understand. The viewer is a live, read-only window on the books, built with, you guessed it, egui. Answers first: cash, runway, profit, and what needs attention. Then every number drills all the way down: statement, to transactions, to lines, to the actual receipt, to its history. When your AI posts something, it shows up on screen in a fraction of a second. The viewer can't change anything at all, which also makes it a great thing to hand to your accountant.

The wanderbooks viewer, showing a demo company

No forms. No wizards. No settings screen buried six menus deep. That's the whole interface.

What using it looks like

You talk to it like you'd talk to a good bookkeeper:

  • "Find the receipt for the Adobe charge on Oct 7 in my email and record it."
  • "Here's last month's bank export. Categorize everything."
  • "The domain renewal went to the wrong account. Fix it."
  • "Why did software spending jump in March?"
  • "Can we afford to hire someone at $6,000 a month?"
  • "Close September."
  • "Get our CPA everything they need for our tax return."
  • "Move us off QuickBooks."

It does the work, shows you the result, and waits for you.

Can it really replace QBO?

For most small businesses, I think yes. Full double-entry books, P&L, balance sheet, cash flow, invoices and bills with aging, fixed assets and depreciation, period close, bank reconciliation, tax categories for Schedule C, 1065, 1120-S, and 1120, a 1099 worksheet, and QuickBooks-compatible exports (IIF and Excel) for a CPA who lives in QuickBooks.

What it doesn't do (yet): automatic bank feeds, running payroll (it records payroll you run in Gusto or ADP), or sending invoices and collecting payments. There's no point-and-click setup. You paste one command into a terminal, once.

The full, honest list is on wanderbooks.ai.

"Fully tested" isn't good enough

If an AI is keeping your books, "we have tests" doesn't cut it. Tests check the examples someone thought of. Proofs check every case. So the fundamental laws of double-entry bookkeeping are proved, three ways:

  • Lean 4 proofs that the accounting laws hold for books of any size, after any sequence of commands. No bounds.
  • Kani model checking that the engine's actual Rust arithmetic kernel is correct and never panics or overflows, for every input within its bounds.
  • Property tests bridging the two, so the code the engine runs agrees with the code that was proved.

On top of that, the usual (and then some): invariant tests encoding accounting law, golden-file report snapshots, end-to-end MCP tests, mutation testing to prove the tests actually catch bugs, and fuzzing with over 11.5 million executions and zero crashes. GnuCash serves as the behavioral oracle. Clean room: it's used to check answers, never as a source of code.

And yes, AI agents wrote most of this, in a few days. Some folks will call that slop before they read a line of it. That's fine. The rule for the agents was simple: verify against an oracle, and never ship what you haven't demonstrated. That's a higher bar than most human teams hold themselves to. If you don't like the process, attack the substance. I genuinely want to hear about it if something's wrong.

Try it, break it, help build it

One line installs everything, makes your books folder, and starts your bookkeeper in Claude Code:

curl -fsSL https://wanderbooks.ai/install.sh | sh -s -- ~/Books/YourCompany

Prefer Codex? Add --codex to the end. Linux and macOS work today; Windows works via WSL2. Want to look around first? Clone the repo and run just demo to open the viewer on a demo company.

It's free and open source (MIT or Apache-2.0), forever. The bookkeeper is the AI plan you already pay for. There's nothing else to buy.

I'm really happy with where this landed, and now I want two kinds of people:

  • Dogfooders. If you run a small business and you're tired of renting your own books, give it a shot. Tell me what breaks, what's confusing, and what's missing.
  • Developers. It's Rust, egui, MCP, and a pile of proofs. If any of that sounds fun, issues and PRs are very welcome at github.com/swaits/wanderbooks.

Let's stop paying rent on our own books.