Skip to content

bsaffel/moneybin

MoneyBin

Your finances, understood by AI.

The personal finance platform you actually own — easy enough to just ask,
powerful enough to query with SQL, and built for the AI you already use.

CI License: AGPL-3.0 Python 3.12+ DuckDB


As easy as Mint was. As powerful as the tools data engineers actually use. Ask your money anything in plain language — then ask to see the exact SQL behind the answer. Your data lives in one encrypted file on your own machine, and you can walk away with it any time.

Why I built this. When Mint shut down, I lost access to years of my own financial data. I'd switched to Mint from Quicken because it was effortless — and then it was just gone. I work with data all day and always wanted to query my money the way I query everything else: with SQL. So I built the tool I wanted — the ease of Mint, the power of a best-in-class analytics stack, and AI as the primary way you interact with it. — Brandon

What makes MoneyBin different

  • Ask your money anything. MoneyBin speaks MCP, the protocol your AI assistant uses to reach local tools — so Claude, Cursor, VS Code, Gemini CLI, Codex, and others can answer real questions about your finances. Bring your own model; when a better one ships, MoneyBin works with it on day one. → MCP guide

  • Query it like a data engineer. Underneath the chat is a real analytics warehouse — DuckDB plus SQLMesh, the framework that compiles and versions SQL pipelines. Every number traces from a canonical table back through a model to your original file. When the AI gives you an answer, ask it to show you the SQL. → SQL access

  • Built to be extended — by you and your agents. MoneyBin assumes you'll want to track your money your way. The schema and the import pipeline are stable contracts an agent can build against today — and a first-class extension contract for reports, analysis packages, and data providers is taking shape now, so you (or Claude Code, or Cursor) can vibe-code a new report, a custom importer, or a whole tracker on top of your own data. MoneyBin wants to be the first tool your agent reaches for. → Extension contract

  • You own it, end to end. Local-first by default — one encrypted DuckDB file per profile under ~/.moneybin/, AES-256-GCM at rest. No vendor account required, no data resale, no lock-in. The same code powers an optional hosted tier; switching deployments is moving one file. → Architecture · Threat model

  • Your history comes with you. Import from bank files (CSV/OFX/QFX/QBO/Excel/Parquet), sync from Plaid, or connect a live Google Sheet — your categories migrate with you and auto-rules learn from them. Cross-source dedup means re-importing overlapping months never double-counts. → Data import

How it works

graph LR
    A["Your bank files<br/>Plaid · Sheets"] --> B["MoneyBin<br/>encrypted DuckDB + SQL"]
    B --> C["AI assistants<br/>via MCP"]
    B --> D["You<br/>CLI · SQL · agents"]
Loading

Architecture for the full pipeline.

Quick Start

Today's install is for developers. A brew install path is in flight. Until then, git clone + uv is the path. Not comfortable with a CLI checkout? Bookmark the project and check back.

Platform: macOS is the primary target; Linux works via PyPI; Windows is untested. MoneyBin runs on demand — no daemon, no container, no open network ports (the MCP server speaks stdio).

git clone https://github.com/bsaffel/moneybin.git
cd moneybin
make setup

The first command you run sets up your profile automatically — one encrypted database that's yours, under ~/.moneybin/. Everything you import lands there.

Bring in your data — import a file, drain the watched-folder inbox, or sync a Plaid-connected bank:

moneybin import files path/to/transactions.csv    # CSV / TSV / Excel / Parquet / Feather
moneybin import files path/to/checking.qfx        # OFX / QFX / QBO
moneybin import inbox                              # drain ~/Documents/MoneyBin/<profile>/inbox/
moneybin sync pull                                 # Plaid sync (cash + credit-card accounts)

Coming from another tool? Tiller, Mint, and YNAB have first-class migration profiles; Lunch Money, Copilot, Monarch, and Maybe export CSV that the generic importer reads. Beancount and GnuCash users can drop OFX/QFX exports through the same command. → Data import guide

Wire MoneyBin into your AI client and ask in natural language:

moneybin mcp install --client claude-desktop      # also: claude-code, cursor, codex, gemini-cli, ...
  • "What's my spending by category this month?"
  • "Find all my recurring subscriptions and their annual cost."
  • "Show me the SQL behind that number."

Or drive the same primitives from the shell — agents and humans share one JSON envelope:

moneybin reports networth --output json
moneybin transactions list --category Groceries --output json
moneybin sql query "SELECT category, SUM(amount) FROM core.fct_transactions GROUP BY 1"

Data Import · MCP clients · CLI reference · What works today

Where it stands

MoneyBin is pre-v1. It's in daily use by the author, and the foundation is built to last rather than built to demo.

Working today: the CLI and MCP server (≈70 tools across nine AI clients), encrypted multi-profile storage, file imports (CSV/OFX/QFX/QBO/Excel/Parquet) and a watched-folder inbox, Plaid sync (cash + credit cards), live Google Sheets sync, cross-source dedup and transfer detection, rule-based categorization with an opt-in LLM-assist step, eight curated reports, privacy-safe ad-hoc SQL, reversible edits with a full audit trail, and moneybin system doctor integrity checks.

In flight: a brew install path and first-run onboarding, drop-any-PDF import (AI-assisted extraction), an extensible report framework, Plaid production approval, and the contributor extension contract.

Planned: investment & cost-basis tracking, multi-currency, budgets, a web UI dashboard, and an opt-in hosted tier — same code you can self-host.

What works today · Roadmap · Where MoneyBin fits

Is it for you?

MoneyBin's lane is narrow on purpose: your data stays on your machine, AI assists rather than runs the show, the code is open source, and every database file is encrypted at rest. It fits best if you're comfortable in a terminal and want your finances inside your own data and AI workflow. If you need a polished mobile app, a shared household budget, or pure envelope budgeting today, the audience page names the tool that's genuinely a better fit — honestly. → Audience · Comparison

Documentation

Community

Contributing

CONTRIBUTING.md — dev setup, project structure, scenario runner, branching conventions

License

AGPL-3.0. MoneyBin uses the same license model as Bitwarden, Plausible, Element, and Sentry — open source, self-hostable, with a planned hosted tier that runs the same code anyone can self-host. → Why AGPL

About

Open-source, local-first, AI-native personal finance platform built on DuckDB

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages