personal finance, owned outright

Your money.
Your server.
Your numbers.

A self-hosted budgeting app that connects to your real banks via Plaid, draws your net worth from daily snapshots, and never sends your transactions to anyone but you.

9:41 93
Net Worth
Net Worth
$214,389.42
Assets
$346,118
Debts
$131,729
1W 1M 3M 1Y ALL
Net Worth
Accounts
Settings

What it does

The features of a budgeting SaaS, none of the data leaving your network.

Net worth, real-time

Connect Chase, Vanguard, your credit cards, mortgage. Daily balance snapshots draw the chart. Plaid does the bank connection; the snapshots are yours.

Every account, one place

Checking, savings, credit cards, brokerage, 401k, IRA, HSA, mortgage, student loans. Grouped by institution, balanced separately as assets vs debts.

2 years of history, day one

Walks Plaid's transaction history backward to reconstruct your daily balances. The chart starts with your real financial life — not a single point at $0.

YNAB-style categories

Define your own categories, sort transactions into them, see where your money actually went. No envelopes, no judgment — just the truth.

Coming soon

On-device AI categorization

Suggests categories for new merchants using Apple's Foundation Models, running locally on your phone. Your transaction descriptions never touch a third-party model.

Coming soon

Subscription auditor

Detects recurring charges (Patreon, streaming services, that gym you stopped going to) and surfaces them. With one-tap "how do I cancel" links.

Coming soon

Privacy by architecture

The reason "self-hosted" matters.

No third-party servers in the data path.

Your bank balances and transactions go: Plaid → your server → your phone. There is no Mint-style middleman keeping a copy.

Plaid tokens encrypted at rest.

Every Plaid access token in the database is sealed with AES-256-GCM using a key only your server has.

No analytics. No telemetry.

The app makes API calls to your server. That's it. Nothing else leaves your phone, nothing pings a SaaS.

AI runs on your phone.

Categorization suggestions use Apple's on-device Foundation Models. Your transaction descriptions never touch OpenAI, Anthropic, or anyone else.

Plaid is the one external service. It connects to your banks on your behalf — there's no other practical way to do programmatic balance access in the US. See the privacy policy for what Plaid receives and stores.

Run it yourself

A backend in Go, an iOS client, a daily cron.

mo:no budget is a personal project. The full stack is open: a Go service you deploy on whatever Linux box you trust, a SwiftUI iOS app you build in Xcode, and a Plaid Production key you bring yourself.

Backend
Go · Postgres · Redis
Single Docker Compose stack
Client
SwiftUI · iOS 26+
Plaid Link iOS SDK
Network
Tailscale + Caddy
API stays Tailnet-only
Quick start
# on your Linux box
git clone https://github.com/kaymoverse/mono-budget.git
cd mono-budget
cp .env.example .env  # fill in Plaid keys
docker compose up -d

Who is this for?

People who want a budgeting app and aren't comfortable handing a SaaS company a token to all their bank accounts forever. Comfortable with a Linux box, SSH, and reading .env files.

What does Plaid see?

Your bank credentials at link time, then your account balances and transactions whenever your server pulls them. Plaid stores these to provide the service. Standard for any Plaid-connected app. Details in the privacy policy.

Will there be a hosted version?

No. The whole point is that the data lives on hardware you own. If hosting it sounds annoying, this app is not for you, and that's fine.

How much does it cost?

The app is free. Plaid Production charges per connected institution per month — typically a few dollars in total for a personal-scale setup. You'd see this on your Plaid dashboard, not from us.