Zero-barrier personal CFO — Claude Code Plugin powered by Beancount
Project description
QuidClaw
Zero-barrier personal CFO.
Local-first. Privacy by design. Your data never leaves your machine.
QuidClaw is an open-source Claude Code Plugin that turns Claude into your personal CFO using Beancount double-entry accounting. No financial background needed — just talk naturally about your money and QuidClaw handles the bookkeeping.
"Lunch was $12, paid with Apple Pay" → proper double-entry transaction recorded in your local ledger.
Why QuidClaw
- Privacy first — All data stored locally as plain text. No servers, no cloud, no telemetry. Nothing ever leaves your machine.
- You own your data — Standard Beancount
.beanfiles you can read, edit, and version control. No vendor lock-in, no proprietary formats. - Zero barrier — No financial knowledge required. Talk naturally, and QuidClaw translates into proper accounting.
How It Works
┌─────────────────────────────┐
You ──→ Claude Code ──→ │ QuidClaw Plugin │
│ ┌─────────┐ ┌───────────┐ │
│ │ Skills │ │ Agents │ │ ──→ your project folder
│ │ Hooks │ │ MCP Tools│ │ (local data)
│ └─────────┘ └───────────┘ │
└─────────────────────────────┘
- Skills — AI workflows for onboarding, bill import, reconciliation, reports, anomaly detection
- Agents — Specialized subprocesses for bill parsing and document organization
- Hooks — Automatic triggers (e.g., check inbox when you start a session)
- MCP Tools — 16 data operations for reading and writing your ledger
QuidClaw doesn't run any AI model. It's a bridge between Claude and the Beancount accounting engine.
Features
- Record transactions via natural language
- Multi-currency support (USD, EUR, CNY, etc.)
- Import bills — drop PDFs, CSVs, or screenshots into your inbox and QuidClaw parses them
- Smart deduplication — detects and prevents duplicate entries during import
- Document organization — files are automatically archived by date
- Financial knowledge base — stores insurance policies, subscriptions, asset details as structured notes
- Anomaly detection — flags duplicate charges, subscription price changes, unusual spending
- Balance queries and reconciliation
- Financial reports (income statement, balance sheet, spending trends)
- Flexible BQL (Beancount Query Language) queries
- Price tracking for stocks, crypto, and forex
Prerequisites
- uv — Install with:
curl -LsSf https://astral.sh/uv/install.sh | sh
Getting Started
Claude Code (recommended)
QuidClaw works best as a Claude Code Plugin, giving you the full experience — skills, agents, hooks, and MCP tools:
claude --plugin-dir /path/to/quidclaw
Or clone and run:
git clone https://github.com/thorb/quidclaw.git
claude --plugin-dir ./quidclaw
MCP-only setup
You can also use QuidClaw as a standalone MCP server with any MCP-compatible client. This gives you the 16 MCP tools without the Plugin extras (skills, agents, hooks).
Claude Desktop
Add to your claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"quidclaw": {
"command": "uvx",
"args": ["--python", "3.13", "quidclaw"]
}
}
}
Restart Claude Desktop.
Claude Code (MCP only)
claude mcp add quidclaw -- uvx --python 3.13 quidclaw
Codex
Codex runs MCP servers in a sandbox, so uvx won't work directly. Install first, then configure:
uv tool install --python 3.13 quidclaw
Add to ~/.codex/config.toml:
[mcp_servers.quidclaw]
command = "quidclaw"
args = []
type = "stdio"
Other MCP clients
QuidClaw is a standard MCP server using stdio transport. Configure your client to run:
uvx --python 3.13 quidclaw
Install from source
For contributors or users who prefer not to use uv:
git clone https://github.com/thorb/quidclaw.git
cd quidclaw
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Then use the full Python path in your client config:
{
"command": "/absolute/path/to/quidclaw/.venv/bin/python",
"args": ["-m", "quidclaw"]
}
Replace the path with the output of
which python(run inside the activated venv).
Usage
Once connected, just talk naturally:
You: Help me get started
AI: Welcome! Which language do you prefer? / 欢迎!你希望用哪种语言?
You: 中文
AI: 你好!我是你的私人财务助理。怎么称呼你?
You: 叫我小明就好
AI: 小明,你管理的是个人财务还是公司的?
...
AI: 好的,我已经了解了你的大致情况。现在最重要的是把你的银行流水导入进来——把文件放到 inbox 文件夹,我来处理。
Data Storage
QuidClaw uses a directory-as-project model — there is no global default directory. You create a folder for your finances (e.g., ~/my-finances/), open Claude Code there, and QuidClaw auto-detects it as the project root. All data is stored locally as plain text:
~/my-finances/
├── ledger/ # Beancount ledger
│ ├── main.bean # includes all other files
│ ├── accounts.bean # account definitions
│ ├── prices.bean # price directives
│ └── 2026/
│ ├── 2026-01.bean # January transactions
│ └── ...
├── inbox/ # Drop zone — put files here for import
├── documents/ # Organized archive (auto-managed)
│ └── 2026/01/ # Filed by year and month
├── notes/ # Financial knowledge base
│ ├── profile.md # User profile
│ ├── calendar.md # Financial calendar
│ ├── assets/ # Property, vehicles, investments
│ ├── liabilities/ # Loans, mortgages
│ ├── insurance/ # Policy details
│ ├── accounts/ # Bank and brokerage accounts
│ ├── subscriptions/ # Recurring charges
│ ├── income/ # Salary, side income
│ ├── decisions/ # Financial decisions log
│ └── journal/ # Free-form financial notes
└── reports/ # Generated reports
Plugin Components
Skills (7)
| Skill | Triggers when... |
|---|---|
| onboarding | New user, no existing ledger |
| import-bills | Files dropped in inbox, user uploads documents |
| reconcile | Before any financial analysis — ensures data accuracy |
| monthly-review | User asks for spending summary or monthly report |
| detect-anomalies | User asks about suspicious charges or subscription review |
| organize-documents | New files in inbox need archiving |
| financial-memory | User mentions financial facts worth remembering |
Agents (2)
| Agent | Purpose |
|---|---|
| bill-parser | Parse PDFs, CSVs, and images into transactions |
| document-organizer | Classify and archive files |
Hooks (1)
| Hook | Trigger | Action |
|---|---|---|
| inbox-check | Session start | Silently checks inbox for unprocessed files |
MCP Tools
QuidClaw exposes 16 tools to AI clients:
| Tool | Description |
|---|---|
set_data_dir |
Set the data directory path |
init_ledger |
Initialize ledger with default or custom accounts |
add_account |
Open a new account |
close_account |
Close an account |
list_accounts |
List accounts, optionally filtered by type |
add_transaction |
Record a transaction |
get_balance |
Query account balances |
balance_check |
Verify balance for reconciliation |
query |
Execute arbitrary BQL queries |
report |
Generate income statement or balance sheet |
fetch_prices |
Fetch commodity prices |
| Reports & Analysis | |
monthly_summary |
Income, expenses, savings for a month |
spending_by_category |
Ranked category breakdown |
month_comparison |
Month-over-month comparison |
largest_transactions |
Top N biggest transactions |
detect_anomalies |
Find duplicates, subscriptions, outliers |
See MCP Tools Reference for full parameter details.
Development
See Install from source above, then:
pytest
See Architecture for design details.
Author
Yue Jiang — GitHub
License
This project is licensed under the GNU General Public License v2.0, the same license used by Beancount.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quidclaw-0.2.0.tar.gz.
File metadata
- Download URL: quidclaw-0.2.0.tar.gz
- Upload date:
- Size: 63.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9055d48e81f04a3d1cd78234b4e3b3d88f87e32e77a8b7ba25276a32ec750599
|
|
| MD5 |
3c66ed73edfef81af74a8db7fdb7aaeb
|
|
| BLAKE2b-256 |
996385adbe081c3a9269facc1e782816ad92ad2bf85da6d36e14d245156cc16f
|
File details
Details for the file quidclaw-0.2.0-py3-none-any.whl.
File metadata
- Download URL: quidclaw-0.2.0-py3-none-any.whl
- Upload date:
- Size: 32.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33c5a99c7fa5da18e30e27ca80972c6822246d60a364de4f17e08ac8bb0a9bb4
|
|
| MD5 |
d5c4d35e8e904e27923c4f1a71c17604
|
|
| BLAKE2b-256 |
a2d1c62181f835d1d471c576626b72fb43e3b0e31290caf6657ac191e75d5d86
|