Skip to content

thedavidweng/money

money

money

A local-first, self-hostable personal finance backend for AI agents and power users.

CI Release License Go


What is money?

money pulls account and transaction data from user-configured financial providers, stores it in a user-owned encrypted SQLite database, and exposes stable CLI + JSON contracts for external agents, scripts, and cron jobs.

It does not embed AI chat, model providers, hosted billing, telemetry, or a required long-running server. Your data stays local. Your agent owns the reasoning.

Why

Existing personal finance tools either lock data behind a paid SaaS, embed opinionated AI advisors, or assume a full web-app product shape. money takes a different approach:

  • Local-first data ownership — your financial data lives in an encrypted file you control.
  • Agent-friendly contracts — stable JSON envelopes that any AI agent, script, or automation can parse.
  • Provider-neutral — Plaid, Bridge, CSV imports — providers are replaceable adapters.
  • No server required — runs as a CLI on your laptop, in cron, or in CI.

Getting Started

👉 New to money? Read the full Getting Started guide for step-by-step installation, setup, and pricing details.

Quick Start

# Install via Homebrew Cask (macOS/Linux)
brew install --cask thedavidweng/tap/money

# Or install via Go (macOS/Linux/cross-platform)
go install github.com/thedavidweng/money/cmd/money@latest

# Initialize configuration and encrypted database (interactive)
money setup

# Link your bank and sync data
money link
money sync

# Query your local data
money accounts list --json
money transactions search "Costco" --json

If you installed an older Homebrew formula release, migrate to the cask:

brew update
brew uninstall --formula thedavidweng/tap/money
brew install --cask thedavidweng/tap/money
money version

Your local ~/.money config, secrets, and database are not removed by uninstalling the old formula.

Try it without real credentials:

money demo accounts list --json
money demo transactions search "coffee" --json

Commands

# Getting Started
money setup                         Initialize configuration and encrypted database
money doctor                        Check configuration and system health (--fix, --dry-run)
money demo <command>                Run against non-persistent sample data

# Data Queries
money accounts list                 List financial accounts
money accounts create-manual        Create a local manual account
money transactions list             List transactions with filters
money transactions search           Search transactions by text
money tx                            Alias for transactions
money categories list               List transaction categories
money tags list                     List transaction tags
money recurring list                List recurring transactions
money investments holdings          List investment holdings
money investments securities        List investment securities
money liabilities list              List liabilities
money items list                    List linked provider items
money items get <id>                Get a linked provider item
money items rename <id> <name>      Rename a provider item alias
money items remove <id>             Remove a linked provider item with cascade delete
money import <source> <file>        Import data from external sources (source: monarch, csv)
money cashflow                      Show cashflow summary by period
money net-worth                     Show net worth breakdown

# Budgets & Rules
money budgets list                  List budgets
money budgets create                Create a budget
money budgets get <id>              Get budget details with categories
money budgets delete <id>           Delete a budget
money budgets categories create     Add a category to a budget
money budgets categories delete     Remove a category from a budget
money rules list                    List transaction rules
money rules create                  Create a transaction rule
money rules delete <id>             Delete a transaction rule
money rules apply                   Apply rules to transactions

# Provider Management
money link                          Link a financial institution
money providers configure <provider> Configure provider credentials
money plaid login                    Sign in to Plaid Dashboard and fetch API keys
money plaid logout                   Remove Plaid Dashboard auth; keep API keys
money plaid sandbox link             Create and store a Plaid Sandbox Provider Item
money providers plaid link          Link a Plaid Provider Item
money providers bridge link         Link a Bridge Provider Item
money sync                          Sync linked provider data (supports --start-date/--end-date)

# Utilities
money feedback                      Open the project GitHub issues page
money version                       Print version

Global Flags

--config string            config file path
--profile string           configuration profile (default "default")
-j, --json                 write a JSON envelope to stdout

Read commands and provisional sync diagnostics support --json for machine-readable output. Manual write operations require --dry-run or --confirm.

Architecture

cmd/money/             CLI entrypoint (Cobra)
internal/cli/          CLI commands and doctor diagnostics
internal/config/       Configuration loading and validation
internal/contracts/    JSON envelopes, schema versions, error codes
internal/core/         Finance primitives and domain types
internal/importsource/ CSV and Monarch Money importers
internal/linking/      Plaid Link helper functions
internal/plaidlogin/   Plaid Dashboard OAuth login flow
internal/prompt/       Interactive TUI prompts (via Charm huh)
internal/providers/    Provider adapters (Plaid, Bridge, …)
internal/store/        Encrypted SQLite store and migrations
internal/syncer/       Transaction sync orchestration

Read commands use local data only. Sync is the explicit boundary where outbound provider calls happen. See docs/ARCHITECTURE.md for the full design.

Design Principles

  • CLI-first — human output by default, --json for automation.
  • Stable contracts — versioned JSON envelopes with deterministic sorting and pagination.
  • Explicit failures — no hidden fallbacks, no silent downgrades.
  • BYOK providers — bring your own Plaid/Bridge credentials; no managed proxy or subscription.
  • Encrypted at rest — real financial data never touches plaintext SQLite.
  • Small deep modules — simple interfaces over pass-through wrappers.

Documentation

Document Purpose
docs/GETTING_STARTED.md Install, setup, and pricing guide
docs/PRD.md Product requirements
docs/ARCHITECTURE.md Module boundaries and data flow
docs/CONTRACTS.md Current CLI JSON contracts
docs/SCHEMA.md Database schema contract
docs/CONFIG.md Configuration loading rules
docs/ROADMAP.md Development phases
CHANGELOG.md Release history
SECURITY.md Vulnerability reporting policy

Website

The project landing page (Astro, static HTML) lives in website/. Published site: https://thedavidweng.github.io/money/ (enable GitHub Pages → GitHub Actions in the repository settings if it is not live yet).

cd website
npm ci
npm run dev    # local preview
npm run build  # output in website/dist

Acknowledgements

money draws inspiration from several excellent projects:

  • monarchmoney-cli — agent-friendly CLI contract design, JSON envelope patterns, and safety model.
  • Ray Finance — Plaid/Bridge sync architecture, local encrypted database patterns, and provider adapter design.
  • Actual Budget — local-first budgeting philosophy and automation API patterns.
  • Maybe Finance — personal finance domain modeling and product vocabulary.

License

Apache 2.0

About

Local-first personal finance backend for AI agents and power users

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors