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 Go Report


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 setup and pricing details.

Quick Start

# macOS/Linux
curl -fsSL https://raw.githubusercontent.com/thedavidweng/money/main/install.sh | sh

money setup
money link
money sync
money accounts list --json
money transactions search "Costco" --json

The installer detects Homebrew automatically and uses the cask when available. Otherwise it downloads the release binary to ~/.local/bin.

Other installation methods

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/thedavidweng/money/main/install.ps1 | iex"

The latest release must include a Windows archive for this installer to complete. If it does not, the script fails explicitly and points you to go install.

Homebrew Cask (macOS/Linux):

brew install --cask thedavidweng/tap/money

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

Go:

go install github.com/thedavidweng/money/cmd/money@latest

Manual download: grab the archive for your platform from the latest GitHub Release, extract it, and place the money binary on your PATH.

Try it without real credentials:

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

Uninstall

# Homebrew Cask
brew uninstall --cask thedavidweng/tap/money

# install.sh
curl -fsSL https://raw.githubusercontent.com/thedavidweng/money/main/install.sh | sh -s uninstall

# Go
rm "$(go env GOPATH)/bin/money"

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

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/COMMANDS.md Command inventory and global flags
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

Project docs and landing page: https://thedavidweng.github.io/site/money/

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.

Infrastructure

License

Apache 2.0

Packages

 
 
 

Contributors

Languages