mothermachine

Browse / Invoicing and finance

Ray Finance

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

AdaptableOperable Agent workflowCLI Hybrid TypeScript CLI License: MIT

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.

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

Last activity Aug 1, 2026. Fit: adaptable 3, operable 2.

Editions

Bring your own keys · Free open source

  • Clonegit clone https://github.com/cdinnison/ray-finance
  • Installnpm install -g ray-finance

closed source

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only18 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 need
Plaid developer account (US/CA) or Bridge (EU)LLM provider account, or Ray Pro

Source

Operable: what an agent can drive

Interface

OfficialCLIpublished by the builderlocal

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
github.com/cdinnison/ray-finance#commands
Tools
add_recat_rule budgets goals alerts scoring

Reach

Partial coverage. 7 of 9 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Link bank accountsNot reachableray link opens Plaid Link or Bridge in a browser and needs the human to authenticate
Sync transactions and balancesReachableray sync; scheduled by launchd or cron
Financial dashboard, accounts, transactionsReachableray status, ray accounts, ray transactions (filterable)
Spending breakdown and monthly recapReachableray spending [period], ray recap [period]
Budgets and goalsReachableray budgets, ray goals
Daily score, streaks and alertsReachableray score, ray alerts
Ask the advisor a questionUndeterminedray starts an interactive chat; no documented one-shot or piped prompt mode
Import Apple Card CSV and manual accountsReachableray import-apple <path>, ray add
Backup and restoreReachableray export, ray import

Code stack

Languages
TypeScript
Frameworks
none
Package manager
npm
Database
SQLite (SQLCipher)
Hosting target
local machineDocker
Built
Unknown (recorded, never ranked)

Model stack

Providers
AnthropicOpenAIOllamaany OpenAI-compatible endpoint
Models
none
Keys you need
RAY_PROVIDER RAY_MODEL ANTHROPIC_API_KEY OPENAI_COMPATIBLE_KEY OPENAI_COMPATIBLE_BASE_URL
Prompts live in
~/.ray/context.md

Evidence and confidence

FieldWhere it was seenConfidence
formFactornpm CLI, ray command table in README95%
executionModeldashboard commands are deterministic; chat calls an LLM with tools (README How It Works)90%
operabilityofficial CLI from the Builder; no MCP or API85%
effortREADME Configuration section names env vars, config.json and context.md90%
editionsREADME: bring-your-own-keys free forever; Pro $10/mo with Stripe checkout85%
activeGitHub pushedAt 2026-08-01; HN comments May 2026–
reach80%

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