CLI Local-first For AI agents v0.x · pre-release

Local-first finance data your agent can rely on.

Pull accounts and transactions from providers you configure, store them in encrypted SQLite, and automate with stable CLI + JSON contracts. No embedded AI, no hosted ledger, no long-running server required.

MIT licensed Single Go binary No telemetry Releases →

Introduction

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

Why money

Boring infrastructure for finance, not another advisor

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.

By design

  • Local CLI, machine-readable JSON
  • Encrypted SQLite, BYOK providers
  • Stable, versioned contracts
  • No embedded AI advisor
  • No hosted subscription
  • No required web dashboard

What you get

A small, deep set of primitives

Each capability is a stable command contract. Adding a provider, an import source, or a budget primitive doesn't change how your agent talks to money.

Encrypted SQLite Financial data at rest in an encrypted local file you control — not plaintext SQLite, not someone else’s cloud.
BYOK providers Plaid, Bridge, and more as adapters. You bring credentials; no managed proxy or subscription to money.
Stable JSON contracts Versioned envelopes, deterministic sorting and pagination — built for scripts, cron, and agents.
CLI-first Human output by default; --json when you need parseable stdout. No web server required.
Explicit sync boundary Read commands use local data only. Network I/O happens when you link or sync — not on every query.
Demo mode money demo … runs against bundled non-persistent sample data — no credentials required.

Quick start

Run in two paths: demo, or real provider

Install once. Try the demo without credentials, then configure a provider to sync your own data. Full configuration rules live in the config contract.

Step 1 · Try without credentials

Demo mode

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

# Install via Homebrew
$ brew install 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. money stores them in your encrypted local DB.

# Interactive setup — config, key, database
$ 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.

Architecture

One direction. Local data. Explicit sync.

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 →

Documentation

Contracts and design docs

Everything money commits to lives in the repository. Stable contracts are reviewed before they're called stable.