Personal finance software for people who use coding agents. Open source, fully local software.

dbu6 is built around one report: your income and expenses. It shows what came in and what went out each month, and you can click into any category to see the actual transactions, like the groceries, the subscriptions, and the things you forgot you bought. It's built from the statements your bank and card already send you, whether that's a PDF or a spreadsheet. Your coding agent puts each transaction in a category, and you look over its choices before anything goes into your books. The books are proper double-entry accounts, kept in a SQLite file on your own computer.

dbu6's Income and Expenses report for the last 12 months: income, spending and what remains as three totals, a month-by-month bar chart of income against spending, and spending by account with Food expanded to Groceries and Dining out. Capture: sample-data demo (npx dbu6 seed), signed in as the demo user; viewport 1440×1000 @2x; open /reports/income-expenses; click the Food row to expand it; whole viewport, sidebar kept.
A year of income against spending. Open any category down to what you spent and where.
A walkthrough: from an empty folder to a statement in your books.

Importing your bank statements

Any bank, any format

Drop in a statement from your bank or card as a PDF, CSV or XLS. If dbu6 can't read a layout yet, your coding agent teaches it.

Import statements: a drop zone for PDF, Excel or CSV statement files, with freeform import for transactions not in a file. Capture: sample-data demo (npx dbu6 seed), signed in as the demo user; viewport 1440×900 @2x; open /import; clip x400 y0 w856 h520 (CSS px).

Categorized for you, reviewed by you

Your rules sort what they know; your coding agent sorts the rest, on your machine. You see each transaction beside its category, fix what's wrong, and turn a fix into a rule.

Reviewing a credit card's drafts: each transaction already has an account beside its date, narration, amount and running balance; one is left uncategorized. Capture: sample-data demo (npx dbu6 seed), signed in as the demo user; viewport 1440×900 @2x; open /review; click the HDFC Millennia card, then the Drafts tab; clip x216 y0 w1224 h740 (CSS px).
A card's transactions, each with its category
Automatic transaction categorization rules on the Exact tab: three tabs in order, Exact then Contains then AI, and descriptions grouped by the account they go to. Capture: sample-data demo (npx dbu6 seed), signed in as the demo user; viewport 1440×900 @2x; open /categorization-rules?show=exact; clip x320 y0 w1016 h690 (CSS px).
Your rules, grouped by where they send things

Real books, checked

Every transaction is a balanced double entry. Each statement's balances are checked against your books, and one that doesn't match is held back. A balance sheet, net worth over time and a trial balance come with it.

A card's review overview, held back from posting: one transaction needs a category, no duplicates, and the balance checks against the statement fail; the Add to my books button is disabled. Capture: sample-data demo (npx dbu6 seed), signed in as the demo user; viewport 1440×900 @2x; open /review; click the HDFC Millennia card (its Overview tab); clip x216 y0 w1000 h360 (CSS px).
A statement held back: its balances don't match yet

Your books are one SQLite database in a folder you own. No cloud.

Install

dbu6 needs Node.js 22.18 or newer, uv and poppler's pdftotext to read statements. git and a coding agent are optional.

Then make a folder for your books and serve it:

Try it with sample data

With dbu6 dev running, load a year of sample finances, with the current month left for you to review:

Sign in as demo@example.com with demo-password.

Setting up your books

With dbu6 dev running, open localhost:2345 and sign up. Home shows the next thing to do, one at a time:

  1. Pick a chart of accounts. Start from dbu6's starter chart, or describe your money in a sentence and your coding agent proposes accounts that fit.
  2. Add a bank or card. Name it and the account its statements belong to.
  3. Import a recent statement for it. This is where your books start: dbu6 takes the account's starting balance from it.
  4. Add your opening balances (optional). What your cash, investments and loans held on that day, so the balance sheet is right from the start.
  5. Review, and add it to your books. Fix any categories, check for duplicates and balances, then add it. Nothing reaches your books before this.

If something is missing, npx dbu6 check says what. Getting started has each step in full.

Coding agents

Claude Code, Codex or Pi categorizes what your rules don't, proposes a chart of accounts, and teaches dbu6 statement layouts it can't read yet. Without one, imports still work and your rules do the categorizing.

Install the Sapporta skill once, for the agents on this machine:

After you sign up, give the agent access to your books, and check it:

The token for your account goes in .env.agent; never commit it. With more than one account, add --user you@example.com.

Every day

Your books are data/: one SQLite database. dbu6 keeps no other copy and makes no backup — stop it and copy that folder. Your rules and prompts sit beside it in user-config/, which belongs in git.

More screenshots

Documentation