Skip to content

moneyPersonal Finance Backend

Local-first finance data your agent can rely on. Encrypted SQLite, stable CLI + JSON contracts, BYOK providers — no embedded AI, no required server.

~/projects/finance — money
# no credentials needed$ money demo accounts list --json{"meta": { "schema": "1.0.0", "demo": true },"data": { "accounts": [ { "name": "Chase Checking" }, { "name": "Amex Gold" } ] },"errors": []}$ money tx search "Costco"

See money in action

A product introduction: what money does, how the CLI fits in, and how JSON contracts work for external agents.

Hosted on YouTube · Open in new tab

Step 1 · Try without credentials

Demo mode

Bundled sample data; safe to run anywhere. meta.demo: true on every envelope.

# Install via Homebrew
$ brew install --cask thedavidweng/tap/money

# Or via Go
$ go install github.com/thedavidweng/money/cmd/money@latest

# Try with sample data
$ money demo accounts list --json
$ money demo transactions search "coffee"

Step 2 · Connect a provider

Real sync (BYOK)

Bring your own Plaid / Bridge credentials. Stored in your encrypted local DB.

# Interactive setup
$ money setup

# Link an institution, then sync
$ money link
$ money sync
$ money accounts list --json

All commands accept --json. Write operations require --dry-run or --confirm.

Why money

Many personal finance workflows depend on a single SaaS for truth, on products that bundle AI advisors, or on a full web app you must keep online. That conflicts with owning your data, choosing providers, and giving an external agent predictable, deterministic primitives.

money takes the opposite shape: a user-owned encrypted database, explicit sync to BYOK providers, and machine-readable envelopes. Your agent owns reasoning and memory — not the tool.

Key Commands

CommandDescription
money demo accounts list --jsonTry with sample data (no credentials)
money setupInitialize config and encrypted database
money linkLink a financial institution
money syncSync linked provider data
money accounts listList all accounts
money transactions searchSearch transactions
money doctorDiagnose environment

Architecture

Read commands never call the network. Outbound provider traffic only happens when you explicitly link or sync.

Providers map into canonical records — accounts, transactions, categories, tags, recurring items — and land in encrypted SQLite. Every command returns a versioned JSON envelope with deterministic sorting and pagination.

Read the full architecture document.

Built with VitePress