Nano
Discover Nano: digital money for everyday payments, businesses and the software we build. Explore wallets, the ecosystem and AI-agent integrations.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Private, self-hosted personal finance coach: PSD2 bank sync, local classification, deterministic analytics, encrypted storage, an LLM coach that never sees raw bank data
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A private, self-hosted coach for your household's money. It pulls your bank transactions through the EU's open-banking rules (PSD2, via Enable Banking), sorts them with rules, your own notes and, only for what is left, a language model, and then answers questions like "why was September expensive?" and "which subscriptions should we review?" with numbers computed by code, not guessed by a model. Everything is stored in an encrypted database on your own machine.
It is built for one household in France or Italy, runs on macOS or Linux (or in Docker), and costs nothing beyond the model you choose.
Not financial advice. The coach explains your own spending and saving habits. It does not recommend investments, loans or insurers, and gives no tax or legal advice. Estimates (a mortgage renegotiation, a cancellation date) are labelled as estimates.
A personal open-source project. It is maintained by one person who is not a financial, tax or legal professional (FR: AMF / CIF; IT: Consob), it has not been audited by a third party, it is not a regulated service and it comes with no warranty (MIT). You run it on your own machine, with your own bank data, at your own risk; read docs/security.md before you trust it with a bank.
127.0.0.1 only behind a one-time login link; there is no telemetry, CDN or analytics.coach privacy status lists them (bank API, the model backend, optional alert channels),
coach privacy report shows a local journal of every call (host, size, purpose: never a payload), and [privacy] local_only = true makes
the whole thing run on a local model (Ollama) with the bank sync as the only network use.Details: docs/privacy.md (data flows, retention, delete / export) and docs/security.md (threat model, residual risks).
| Bank sync | Enable Banking in restricted mode (free, your own accounts), the longest history the bank allows at first link (often 90 days to 2 years), daily incremental sync within the PSD2 limits, consent expiry warnings; CSV / OFX / CAMT.053 imports for banks you cannot link |
| Categories | Per-bank description parsers, a shared taxonomy, your corrections as permanent memory, a local nearest-neighbour step, then a model for the long tail |
| Analytics | Monthly averages without one-offs, recurring payments and price rises, anomalies, cash-flow forecast, budgets, goals, calendar of upcoming payments, year in review |
| Subscriptions and contracts | Inventory, duplicates, cancellation rules (FR / IT), cheaper-alternative search (interactive, sourced and dated), cancellation letters from a local template |
| Loans and net worth | Amortisation schedules, payment checks, renegotiation / insurance-delegation estimates, assets and liabilities |
| Coach | "Ask the coach" in the web app and CLI, weekly and monthly digests, 13 skills (monthly review, explain a spike, what-if, tax candidates...) through Claude Code, the Anthropic API or a local Ollama model |
| Alerts | In-app by default; ntfy / e-mail / Telegram only if you enable them, with minimal messages |
| Household and people | Members, account owners, who a transaction belongs to (rules, manual reassignment), one-person views, the children's pocket money and budgets (local-only alerts), transfers across the household's banks, who pays what, per-person logins (adult: everything, child: only their own money) |
Made on the synthetic demo household of scripts/demo/ (every name, bank and amount is invented). The full tour, the screencasts and
the user guide are on the documentation site: https://mmornati.github.io/ai-finance-coach/
| Dashboard | Ask the coach | Subscriptions |
|---|---|---|
| Loans & net worth | Kids' money | Memory and proposals |
Try it yourself without a bank or a model: uv run python scripts/demo/seed_demo.py --home /tmp/coach-demo, then
scripts/demo/run_demo.sh /tmp/coach-demo (Try the demo).
Pick one. All three end with coach init and coach doctor.
uv tool install ai-finance-coach # or: pipx install ai-finance-coach (Python 3.11+; uv fetches one for you)
coach init # your private home (see below)
coach doctor
Try it without installing: uvx --from ai-finance-coach coach doctor. From a release file: uv tool install ./ai_finance_coach-X.Y.Z-py3-none-any.whl.
The package ships the built web app, the database migrations and the data files. (Installing straight from a git URL does not include the
web app, which is not committed: use a release, or build it from a checkout as in section 3.)
An installed package keeps its files in ~/.ai-finance-coach (set COACH_HOME to change it; a config.toml in the current folder wins).
cp -r <this repository> coach && cd coach # or download a release
mkdir -p secrets coach-home/data coach-home/memory coach-home/config && chmod 700 secrets
for k in db_key backup_key proposal_key; do (umask 077; head -c 32 /dev/urandom | base64 | tr '+/' '-_' | tr -d '=\n' > secrets/$k); done
export COACH_UID=$(id -u) COACH_GID=$(id -g)
docker compose build
docker compose run --rm coach setup enablebanking # then: docker compose run --rm coach setup
docker compose up -d # the web app on http://127.0.0.1:8765 only
The container runs as a non-root user with a read-only root filesystem, publishes the app on your loopback only, reads secrets from files,
and has no claude command (use the Anthropic API or Ollama). Back up secrets/ in your password manager. Everything about it, including the
daily-job service and connecting a bank from a container: docs/docker.md. (The Docker files are checked statically in the
tests; building the image needs network access and is not part of the automated checks.)
git clone https://github.com/mmornati/ai-finance-coach.git && cd ai-finance-coach
uv sync # Python and all wheels; no brew needed
(cd web && pnpm install && pnpm build) # the web app is built, not committed
uv run coach init
uv run coach doctor
See CONTRIBUTING.md.
coach init (1 min). Creates config.toml from the commented example, a private data folder, an empty memory skeleton (templates
only), and the secrets (after you type generate; the values are never shown: back them up). Then an empty encrypted database.coach doctor shows what is ready and what to do next.coach setup enablebanking (5 min). Walks you through creating your own Enable Banking application in restricted mode: account,
application, redirect URL to whitelist, the downloaded key, linking your accounts. Everyone needs their own application; none is shipped.coach setup (4 min plus bank logins). The first-run wizard, resumable: connect your first bank (your browser opens on your bank's own
login page), first sync (the longest history the bank allows), normalize and categorize (it first prints exactly what a model would receive,
explains which backend gets it, and asks you to type send; or go fully local), then the onboarding interview about your household.
Nothing leaves your machine without a typed confirmation at the step that does it.coach ui opens the web app through a one-time login link. Ask the coach, review categories, set budgets.coach schedule install (macOS) or coach schedule loop / the Docker scheduler profile for the daily job. Enable Banking (PSD2) ──┐ CSV / OFX / CAMT imports ──┐
▼ ▼
┌────────── ingest: sync, dedup, pending, balances, consents ──────────┐
│ ▼
memory/ (md + yaml, ┌─ classify: bank parsers → memory notes → rules → kNN → LLM (long tail only, redacted)
yours, local) ───────► │ │
▲ └──────────────► encrypted SQLite (SQLCipher) ◄────────────┘
│ │
│ analytics (deterministic): averages, recurring, forecast, budgets, loans, net worth
│ │
│ finance MCP server: read-only, redacted tools + memory PROPOSALS (never writes)
│ │
└── you accept ◄── Coach runtime: Claude Code (claude -p) │ Anthropic API │ Ollama (local)
│
Web app (127.0.0.1, one-time login) · CLI · scheduler (launchd / loop) · alerts (local; opt-in channels)
More: docs/architecture.md.
If you run Claude Code (or another agent) in this folder, treat it as untrusted code running as you: it can read files and run commands with your permissions. The project ships guard rails and a template:
docs/claude-settings.example.json is a template of Claude Code permission rules built from the
categories in docs/security.md: memory integrity, the web app's secrets and state, driving the web app, confirmation
bypass (--yes), decisions and outside contact, destructive and plain-export commands, the Keychain, backups, and the configuration file
(which holds the privacy switches). Copy it to .claude/settings.json of the project where you run the agent, read every line, and adjust.
.claude/settings.json is git-ignored because it can hold absolute paths of your machine.coach security audit checks permissions, leftovers and exposure; CLAUDE.md gives the agent its working rules.Permission rules mitigate; they do not prevent. The residual risks are listed honestly in docs/security.md.
| docs/reference.md | Every command and setting |
| docs/docker.md | Docker, secrets files, daily job in a container |
| docs/architecture.md | Modules, data flows, trust boundaries |
| docs/privacy.md, docs/security.md | Data flows, threat model, permission rules |
| docs/enable-banking.md | The bank aggregator: regulation, what it sees, what this app calls |
| docs/coach.md, docs/skills.md | The coach runtime and its skills |
| docs/memory.md, docs/analytics.md, docs/subscriptions.md, docs/loans.md, docs/alerts.md, , , |
coach reconnect.
Who they are, what they see and keep, and exactly which read-only calls this app makes: docs/enable-banking.md.claude-code backend uses your personal Claude subscription through claude -p and is meant for low-frequency personal use; use the API or
Ollama for automation or sharing.coach backup before you trust it with a new bank, and read the residual risks.MIT. Contributions are accepted under the same licence.
| The parts |
| docs/i18n.md | Translations of the web app: adding a string or a language |
| docs/release.md | The release checklist |
| docs/research/ | The market and legal research behind the project |
| CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md | Project |