A private finance journal from the transaction emails you already receive. Forward them, and Tidings turns them into a calm daily record.

Three steps, then the journal writes itself. No account linking. No aggregator. The emails go where you say.
Your bank already emails you when you spend. Point those alerts at an inbox you keep, and you're done with this step forever.
The merchant, the amount, the date — lifted from each alert and filed. Nothing about the email body crosses a boundary you didn't draw.
Days, budgets, notices. The same data your bank has, finally in a form you'd want to read.
Runs on your hardware. Nothing goes to a model unless you add a key.
Transactions grouped by day. Amounts right-aligned in tabular numerals. Quiet annotations when a category nears its monthly budget, when a merchant repeats, or when a day runs past its usual pace. No alarms. No red panels. Just clarity.

Set an annual target per category and watch the pace, not the panic. Under pace, a category stays quiet. Past it, the row warms to rust. It will never shout.

A briefing reads your spending in prose: month-over-month context, the categories that moved, the anomalies. It never tells you what to do.

No promise to protect your data. A design where nobody else holds it.
Every hop runs on hardware you control.
The repo is the only distribution. No subscription, no commercial tier. The most useful contribution is a parser for a new bank's alerts or statements; the add-a-parser guide and its Claude Code skill build one from your own emails in a single session.
git clone https://github.com/tvhahn/tidings.git
cd tidings
docker compose up -dOpens at localhost:8000. Demo mode by default, seeded with sample data.
The default path is an IMAP poller in Docker. An optional S3 + Lambda chain runs in your own AWS account.
Read the self-hosting guide →Every Tidings surface is a versioned JSON API. The demo journal is served read-only at a public endpoint, so an agent can explore eleven months of a fictional household before you commit to anything.
Read the agent access guide →$ curl 'https://gettidings.com/demo/api/v1/summary?month=2026-03'
{
"current": {
"year_month": "2026-03",
"total_spending": 4923.98,
"spending_count": 54,
"deposit_total": 5221.44,
"by_category": {
"rent": { "amount": 2150, "count": 1 },
"internet": { "amount": 80, "count": 1 },
… 18 more categories
$ curl 'https://gettidings.com/demo/api/openapi.json'Real output, fictional household. Self-hosted installs get the same routes with bearer-token auth.
Long version: read the README in the repo. Tidings is built in the open.
The demo is the full product running in your browser, seeded with a fictional household. Yours is three commands away.
Try the demo