Open source · runs on your machine

Own your whole financial picture

wealthdb collects every bank, brokerage, pension and private-market account into one private database on your own machine. You and your AI agent ask it questions. No advisor, no sales desk, no cloud in the loop.

Paste this into your coding agent

> Help me set up wealthdb for my accounts. Read https://github.com/smartpointer-com/wealthdb/blob/main/README.md and follow it. Never ask me for a password; I will type credentials and MFA codes myself.

The AI agent builds and configures. You sign in to each source and answer its MFA prompt yourself. No AI agent ever logs into your bank.

Run this in a terminal on macOS or Linux. Needs git, make, Docker and Python 3.10+.

❯ git clone https://github.com/smartpointer-com/wealthdb.git && cd wealthdb && make all && make install

Then wealthdb-collect <source> login, download, load, and wealthdb load -a. No Go toolchain: the engine builds inside its container.

No bank needed. An invented household with every report and dashboard.

❯ make demo && make demo-web

Dashboards on http://127.0.0.1:3100/. Add make demo-mcp to point an AI agent at it. Every screenshot on this page comes from that demo.

The Wealth Overview dashboard: net worth, positions and cash tiles, net worth over time by source, asset classes over time The Wealth Overview dashboard: net worth, positions and cash tiles, net worth over time by source, asset classes over time The Allocation dashboard The Allocation dashboard The Returns dashboard: time-weighted and money-weighted returns, cumulative return by source, monthly, quarterly and annual returns The Returns dashboard: time-weighted and money-weighted returns, cumulative return by source, monthly, quarterly and annual returns The Exposure dashboard: exposure by asset class, sector and country with every fund looked through The Exposure dashboard: exposure by asset class, sector and country with every fund looked through The Yield dashboard: what the holdings yield and their rate sensitivity The Yield dashboard: what the holdings yield and their rate sensitivity The Income dashboard: income received and expected, by kind and payer The Income dashboard: income received and expected, by kind and payer The Spending dashboard: spending by category and merchant over time The Spending dashboard: spending by category and merchant over time The Cash Flow dashboard: operating, investing and financing flows, and the household's cash flow statement The Cash Flow dashboard: operating, investing and financing flows, and the household's cash flow statement

Ten dashboards, served locally over a read-only snapshot, in light or dark. Each has a privacy twin that shows shares instead of amounts. The data shown is the invented demo household.

Why

Take back the whole picture

Your money is spread across banks, brokers, pension plans and platforms that each show you only their slice. The people who see it all are the ones selling to you. wealthdb puts the full picture on your own disk, so the insight is yours.

Complete

Every account you hold, in every currency, as of any day. Checking and cards, brokerage and retirement plans, pensions, crypto, private funds, property. One number for net worth, and the whole story behind it.

Private

Your data lands in local databases and nowhere else. The collectors only read. No tech company keeps a copy, and no AI agent ever touches a credential.

Yours to question

Returns the way a fund reports them, exposure with every fund looked through, yield and rate risk, income, spending and cash flow. From the command line, the dashboards, or an AI agent of your choice that reads the same reports.

How it works

Collectors download. The engine consolidates. The reports read.

Three layers. Each source keeps its raw downloads and its own parsed database. The engine merges them into one canonical store. Three surfaces read it.

Collectors · bronze

One program per source

A static, auditable script signs in with your credentials and your MFA answer, then downloads everything the provider has: not just today's balances, but the full history, every transaction, every PDF statement and tax form. No AI agent ever logs into your bank.

  • login
  • download
  • load
  • prune
Silver

One SQLite per source

The raw downloads parsed into a relational database: every detail the provider returned, from a JSON export or a PDF statement, in a compact, queryable form.

  • holdings
  • transactions
  • documents
Engine · gold

One DuckDB store

Every source merged into one canonical model: accounts, positions, lots and flows across all your banks and brokers. FX, transfer pairing between your own accounts, categories, look-through, returns and yield are computed once, over the whole.

Reports · read

One engine, three surfaces

All the reports, however you ask.

CLItables, CSV or JSON
DashboardsMetabase, over a read-only snapshot
MCP serverthe reports as read-only tools for agents
Reports

The questions a household asks of its money

Every report runs for any date and any period, in the currency you pick.

Net worth and allocation

What is held, where, and what it is worth, in one currency at that day's rates. By asset class, vehicle, tax wrapper and account.

❯ wealthdb holdings global -d 2024-12-31 -x CHF

Performance

Time-weighted and money-weighted returns per account, portfolio, provider and the whole. Transfers between your own accounts are matched and never counted as gain.

❯ wealthdb returns portfolios 2025

Gains and cost basis

Realized and unrealized gains from the lots the providers state. Where a provider states none, a lot engine rebuilds them from the trades and says so.

❯ wealthdb gains realized 2025

Exposure

What is really owned once every fund is looked through: asset class, sector, country, currency, credit, maturity, issuer, and where each holding legally sits.

❯ wealthdb exposure countries

Yield and rate risk

What the holdings earn, their duration, and how their value moves with interest rates. Cash is set against its currency's benchmark rate.

❯ wealthdb yield global -x CHF

Income, spending, cash flow

What arrived and what left, categorised across every card and account, and a cash flow statement with the household's internal transfers taken out.

❯ wealthdb cashflow sankey 2025
❯ wealthdb exposure countries
 country | country_name   | region        |  value_USD | share_pct | direct_pct | via_funds_pct | quality
---------+----------------+---------------+------------+-----------+------------+---------------+-----------------------------------
 US      | United States  | north_america | 1584598.93 |     66.66 |      34.09 |         32.58 | proxy=2%,declared=54%,unmapped=<1%
 unknown |                |               |  108023.21 |      4.54 |       2.49 |          2.05 | proxy=3%,partial=2%,unmatched=55%
 CH      | Switzerland    | europe        |  106259.89 |      4.47 |       3.35 |          1.12 | proxy=2%,undeclared=28%
 JP      | Japan          | asia_pacific  |   66105.19 |      2.78 |       0.00 |          2.78 | proxy=6%
 DE      | Germany        | europe        |   65427.86 |      2.75 |       1.75 |          1.01 | proxy=2%
 GB      | United Kingdom | europe        |   52633.76 |      2.21 |       1.23 |          0.99 | proxy=2%
 FR      | France         | europe        |   34384.22 |      1.45 |       0.56 |          0.89 | proxy=4%
 …

❯ wealthdb spending categories 2025 --period annual
 period | category                  | txn_count | spend_USD | refunds_USD | net_spend_USD | share_pct
--------+---------------------------+-----------+-----------+-------------+---------------+----------
 2025   | Food and drink            |       583 |  25368.21 |        0.00 |      25368.21 |     21.70
 2025   | General services          |        40 |  24300.57 |        0.00 |      24300.57 |     20.79
 2025   | Government and non profit |        33 |  15056.53 |        0.00 |      15056.53 |     12.88
 2025   | Travel                    |         8 |  10989.87 |        0.00 |      10989.87 |      9.40
 2025   | General merchandise       |        80 |   9230.18 |        0.00 |       9230.18 |      7.90
 2025   | Home improvement          |        39 |   7596.31 |      100.15 |       7496.16 |      6.41
 …

❯ wealthdb yield global -x EUR
 currency |  value_EUR | income_yield_pct | implied_yield_pct | duration | dv01_EUR | quality
----------+------------+------------------+-------------------+----------+----------+------------------------------------------
 USD      | 2134498.42 |             1.05 |              4.03 |     2.45 |   -31.15 | implied=6% stated=5% indicated=24% …
 EUR      |   56496.17 |             3.22 |              2.20 |     4.37 |    13.71 | implied=39% indicated=22% declared=37% …
 CHF      |   43710.52 |             1.54 |                   |     0.00 |     0.00 | indicated=98% unknown=2%
 GBP      |   25427.54 |             3.51 |                   |     0.00 |     0.00 | indicated=92% unknown=8%
 total    | 2260132.65 |             1.13 |              3.92 |     2.55 |   -17.44 | mixed …
Sources

Every relationship, one collector each

Banks and brokers, pensions and platforms. Each collector is a small, auditable program that reads one provider and nothing else.

Banks and cards

Accounts, cards, mortgages and the rates they state. Full history, statements included.

  • UBS
  • Swissquote
  • Raiffeisen
  • Chase
  • First Citizens
  • American Express

Brokerages

Positions, trades, lots, dividends and tax forms.

  • Schwab
  • Fidelity

Pensions

Pillar 3a and pillar 2 vested benefits, with their fund mixes.

  • VIAC
  • Relevate

Private markets

Fund stakes, direct holdings, capital calls, distributions and quarterly reports.

  • AngelList
  • Carta
  • EquityZen

Crypto

Exchange and wallet history, custodial and self-custody, with the trades that rebuild a cost basis.

  • CoinTracking

Reference and manual

Public data about what each fund holds and pays, FX and yield curves, and a CSV for holdings with no portal such as property or private loans.

  • refdata
  • FRED
  • curves
  • manual
  • statement archives

Thousands more through Plaid

Plaid links the banks, brokers and card issuers it covers, one login at a time. Where wealthdb has no collector of its own, Plaid is the door: the same reports, the same local database. Its tokens read data and cannot move money.

  • Checking and savings
  • Cards
  • Mortgages and loans
  • Brokerage
  • Retirement plans

Missing yours? Add it, and share it.

A new source is one small program dropped in beside the others. A playbook walks a coding agent through writing it while you handle the logins. Most collectors here were built that way in a day or two. Pull requests are welcome.

AI agents

An agent that knows your finances, and cannot touch them

Bring your own agent. wealthdb ships no model and no chat window. It serves its reports over MCP to whatever you already use: OpenClaw, Claude, a coding agent, or a model that runs entirely on your own hardware, so the numbers never leave the machine. Whichever you pick, the agent reads the reports, and only the reports.

OpenClaw · connected to wealthdb over MCP read-only
Rates look like they are heading down next year. How exposed are we, and would our income take a hit?
yield global -x EUR yield accounts income projection

Mostly the other way round. A fall in rates would help your balance sheet a little and cost you some cash income.

  • Rate sensitivity is small and net positive. Across everything, one basis point down is worth about +17 EUR. The home loan is the biggest single lever (duration 2.6, so it reprices soon), and your bond funds gain as rates fall.
  • Income would slip. The holdings pay about 1.1% a year in cash. Half of that is interest from the savings account and the term deposit, which float with rates. Dividends and fund distributions, the other half, do not.
  • Next twelve months, as projected today: roughly 1,000 EUR a month in quiet months, with spikes in December and March when the funds distribute.
Quality: a third of the USD yield figure is still "unknown", mostly the private fund and the 529 plan. Treat the income number as a floor.
Which account should I look at first?
holdings accounts -x EUR

The 12-month term deposit. It holds about 42k EUR at 3.04% and matures within the year, so it is the first thing that reprices lower. The joint savings account is the other floating leg, at 3.48% stated.

If you want to lock income in, that is the money to decide about before it rolls. I can list the bond funds you already hold with their durations, so you can compare.

1
Credentials never meet an agent The collectors are static, reviewable code. A person starts each run and answers each MFA prompt. No agent drives a banking session.
2
The collectors only read Navigate, filter, export. No code path submits a form, places an order or changes a setting, and no flag can enable one.
3
The data lands locally Parsed into local databases and consolidated into one queryable store on your machine.
4
Agent access is read-only by construction The MCP server has no tool that writes, opens the database read-only, and mounts the data read-only. A redacted endpoint keeps amounts out of a transcript. A shell agent runs the CLI with --read-only.
5
Any agent, including a local one OpenClaw, Claude Desktop, Claude Code, or a model served from your own machine. Point it at the MCP endpoint, or let a shell agent run the CLI with the bundled skill. No subscription is required.
Privacy and control

Your data stays on your machine*

Plain database files in a folder you choose. Nothing phones home and nothing syncs. There is no account anywhere for your data to be in.

Open files, your tools

  • Each source is a SQLite file, the consolidated store a DuckDB file. Open them with any client, notebook or spreadsheet.
  • Every report exports CSV or JSON. Back up with a copy, delete with a delete.
  • Dashboards and the MCP server bind to loopback only and read a snapshot. They never reach the live store.

Privacy mode for shared screens

  • The CLI redacts every amount with -p; the shape of the answer stays.
  • Each dashboard has a twin that shows shares instead of amounts.
  • The MCP server has a redacted endpoint, so a transcript can hold the picture without the numbers.

* Three things do leave the machine, each one opt-in. A login linked through Plaid: Plaid reads that institution and keeps a copy of its data. The language model that categorises merchants and resolves tickers, if it runs on a remote endpoint: it sees merchant, payer and instrument names, never an amount, and it can run locally instead. The public reference sources the refdata collector asks about each fund and security: they see which identifiers are asked about, never an amount, an account or a bank.

Read before you configure a credential. The collectors sign in with the same fully privileged login a human uses to move money. Most providers do not offer a read-only sub-scope. Only the code's own discipline restricts them to reading. You are responsible for auditing this code, its dependencies and its images before trusting it with credentials, and your use may breach a provider's terms. Provided as is, without warranty, under the MIT license. The full disclaimer.

Start with the demo. Then add your first account.

Open source under the MIT license. Runs on macOS and Linux with Docker. The demo household shows every report and dashboard before you hand over a single credential.