# Ray Finance

Local-first AI financial advisor CLI over Plaid or Bridge bank data, bring your own model.

Ray syncs bank accounts through Plaid (US/CA) or Bridge (EU) into an encrypted SQLite file and answers 'can I afford this' from a persistent context file about your goals. Dashboard commands (status, spending, budgets, goals, alerts) are deterministic; the chat calls your chosen model with PII masked. Free with your own keys; a $10/month Pro edition supplies the keys.

Alternative to: Copilot Money, Monarch Money

- Capabilities: adaptable, operable
- Vertical: invoicing-finance
- Shape: agent-workflow
- Form factor: cli
- Execution model: hybrid
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/cdinnison/ray-finance (MIT), 301 stars, last commit 2026-08-01
- Last activity: 2026-08-01
- Page: apps/cdinnison--ray-finance.html
- JSON: apps/cdinnison--ray-finance.json

## Use it when

- I want a money advisor that knows my situation and runs on my laptop with a model I choose
- I want cron to sync my banks and my agent to read spending and budget status from the CLI

## Gotchas

- Plaid OAuth banks (Chase, Capital One) need PLAID_REDIRECT_URI registered in the Plaid dashboard
- Plaid production access requires Plaid approval; sandbox only gives fake data
- The chat is interactive; there is no documented non-interactive prompt flag for agents

## Editions

- Bring your own keys: Free, open source
  - source: https://github.com/cdinnison/ray-finance
  - installable: npm install -g ray-finance
- Pro (managed keys): $10 per month, closed source
  - hosted: https://rayfinance.app

## Adaptable: make it yours

Effort: config-only (18 things to edit)

Pick the model provider and model in .env or ~/.ray/config.json, add Plaid or Bridge credentials, and edit ~/.ray/context.md, the persistent profile the advisor reads before every answer. That file is where an Adopter changes the advice: household, goals, strategy, rules.

- Env vars: RAY_PROVIDER, RAY_MODEL, ANTHROPIC_API_KEY, OPENAI_COMPATIBLE_KEY, OPENAI_COMPATIBLE_BASE_URL, PLAID_CLIENT_ID, PLAID_SECRET, PLAID_ENV, PLAID_REDIRECT_URI, PLAID_OPTIONAL_PRODUCTS, BRIDGE_CLIENT_ID, BRIDGE_CLIENT_SECRET, DB_ENCRYPTION_KEY, PLAID_TOKEN_SECRET, RAY_PORT
- Config files: ~/.ray/config.json, .env
- Prompt files: ~/.ray/context.md
- Accounts you'll need: Plaid developer account (US/CA) or Bridge (EU); LLM provider account, or Ray Pro

## Operable: what an agent can drive

Operability: official. Interface: cli at https://github.com/cdinnison/ray-finance#commands (published by the builder, local).

### Reach (partial coverage)

- Link bank accounts: not reachable. ray link opens Plaid Link or Bridge in a browser and needs the human to authenticate
- Sync transactions and balances: reachable. ray sync; scheduled by launchd or cron
- Financial dashboard, accounts, transactions: reachable. ray status, ray accounts, ray transactions (filterable)
- Spending breakdown and monthly recap: reachable. ray spending [period], ray recap [period]
- Budgets and goals: reachable. ray budgets, ray goals
- Daily score, streaks and alerts: reachable. ray score, ray alerts
- Ask the advisor a question: undetermined. ray starts an interactive chat; no documented one-shot or piped prompt mode
- Import Apple Card CSV and manual accounts: reachable. ray import-apple &lt;path>, ray add
- Backup and restore: reachable. ray export, ray import

## Code stack

- Languages: TypeScript
- Frameworks: none
- Package manager: npm
- Database: SQLite (SQLCipher)
- Hosting target: local machine, Docker

## Model stack

- Providers: Anthropic, OpenAI, Ollama, any OpenAI-compatible endpoint
- Models: none
- Keys you need (names only): RAY_PROVIDER, RAY_MODEL, ANTHROPIC_API_KEY, OPENAI_COMPATIBLE_KEY, OPENAI_COMPATIBLE_BASE_URL
- Prompts live in: ~/.ray/context.md
- Tools: add_recat_rule, budgets, goals, alerts, scoring

## Evidence and confidence

- formFactor: npm CLI, ray command table in README (confidence 0.95)
- executionModel: dashboard commands are deterministic; chat calls an LLM with tools (README How It Works) (confidence 0.9)
- operability: official CLI from the Builder; no MCP or API (confidence 0.85)
- effort: README Configuration section names env vars, config.json and context.md (confidence 0.9)
- editions: README: bring-your-own-keys free forever; Pro $10/mo with Stripe checkout (confidence 0.85)
- active: GitHub pushedAt 2026-08-01; HN comments May 2026
- reach:  (confidence 0.8)

## Open questions

- Whether ray accepts a prompt argument or stdin for non-interactive advisor calls
- Is context.md safe to edit by hand or only through the self-updating flow

## Sources

- https://github.com/cdinnison/ray-finance (sourcing:invoicing-finance:community)
- https://www.npmjs.com/package/ray-finance (analysis:invoicing-finance)
