OpenChart
Claude·Codex와 함께하는 무료 데스크톱 차트 도구. 알림 설정·차트 움직임 분석·데이터 제공자 선택
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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 |