Beta
Fin Break
About Fin Break
finbreak
A private desktop app that breaks down where your money goes — from your own bank statements, with no bank linking and none of your financial data ever leaving your machine. The only network access the app makes itself is an opt-in, off-by-default updater — turn it on and (on the Linux AppImage build) it checks GitHub for a newer release and can download
- install a signature-verified update; leave it off (the default) and the app makes no network connections of its own.
Current version: 0.1.5 (early preview). ⬇ Download the latest release, or see CHANGELOG for what's shipped and ROADMAP for what's coming.
Read the full guideShow less
Status
finbreak is in early development — 0.1.0 is the first public release,
an early preview with rough edges. The core already works end-to-end:
- a private, password-protected place to keep your finances (an encrypted vault),
- importing statements from CSV, OFX, and PDF files (including password-protected PDFs),
- organising them into accounts and a category tree, and
- automatically sorting transactions into categories, with rules you can edit and corrections it learns from.
Still to come: a dashboard with charts and summaries, automatic transfer detection (spotting money moving between your own accounts), and password-protected PDF export. See the ROADMAP for the full plan.
Install
Linux (x86_64) — everything is bundled, so you don't need Python or any libraries installed:
- Download the
finbreak-*-x86_64.AppImagefrom the latest release. - Make it runnable (once):
chmod +x finbreak-*-x86_64.AppImage - Launch it — double-click in your file manager, or run
./finbreak-*-x86_64.AppImage.
Each release also ships a .sig file next to the AppImage — that's the
signature finbreak uses to check updates are genuine; you don't need to do
anything with it yourself.
Windows and macOS — packaged installers are on the way (see ROADMAP → P13). Until then, you can run from source with Python 3.12+ (see CLAUDE.md "Build and test").
Quickstart
- Launch finbreak. The first time, you'll create your vault by choosing a master password. This password encrypts everything — keep it safe, because there is no way to recover your data if you forget it.
- Add an account (for example, your current account).
- Import a statement — point finbreak at a CSV, OFX, or PDF file from your bank. It reads the transactions and files them into categories.
- Fix anything it got wrong. Change a transaction's category and finbreak can turn your correction into a rule, so it gets it right next time.
- Lock it when you're done. finbreak also locks itself automatically after a period of inactivity (you can set how long in Settings).
Staying up to date (optional)
Automatic updates are off by default. If you'd like finbreak to check for new versions, turn on "Check for updates on startup" in Settings. When it's on, finbreak checks GitHub at launch and, if there's a newer release, offers to download and install it — but only after verifying the download's signature, so a tampered update can never be installed. Leave it off and finbreak makes no network connections at all.
For maintainers
To resume work: open a terminal in this directory and run claude,
then type continue. Claude will summarise current state back to you
before doing any work — confirm or correct that summary; never let Claude
resume work without it.
Documentation
- ROADMAP — what's planned, with stable IDs.
- CHANGELOG — what's shipped, Keep-a-Changelog
format with an
[Unreleased]block at the top. - docs/discovery.md — Phase A output: problem, users, success criteria, tech stack, out of scope.
- docs/design.md — Phase B output: architecture diagram, components, data flow.
- docs/decisions/ — Architecture Decision Records. Why we chose X over Y.
- docs/glossary.md — domain terms used in code and docs.
- docs/known-issues.md — findings deferred because they're blocked by an unbuilt feature.
- docs/audit-allowlist.md —
project-specific false-positive memory for
/auditand/indie-review. - docs/ideas.md — mid-flight ideas pending a user-decision on placement (created on first use).
- docs/standards/ — coding, naming, dependencies, documentation, testing, commits (+ roadmap-format).
- .claude/workflow.md — live workflow state and rules.
Disclaimer
finbreak is provided as-is, with no warranty of any kind (see LICENSE). It reads and summarises your bank statements locally on your own machine — it does not give financial advice, and it is not connected to your bank.
The author is not responsible for any incorrect information the app may display — for example a mis-read amount, a wrong category, or an inaccurate total. Always check important figures against your original statements before relying on them.
If you spot something wrong, please log an issue so it can be investigated and fixed. Bug reports genuinely help make the app more accurate for everyone.
License
MIT.
What's new · v0.1.6
Fixed
After installing an update, finbreak now reliably reopens itself. (FIBR-0054) Previously the app could close after updating without coming back — it tried to start the new version before the old one had fully shut down, and the new copy died in the collision. It now waits for the old version to exit completely, then launches the new one, and records a small diagnostic log so any future hiccup leaves a trace. (Note: because the fix lives in the update machinery, it only takes effect from the NEXT update after this one — the update into this version may still need one manual reopen.)
Credit-card statements that open in credit now import correctly. (FIBR-0106) Some Standard Bank credit-card statements print a plain-English sentence mentioning the "balance brought forward" before the real opening-balance row. finbreak was reading the figure from that sentence (which is actually the closing amount), so the statement failed to import with "this statement didn't add up." It now reads the true opening balance and imports as expected.