A local-first personal finance dashboard for the unified picture of your cross-account money.
🇬🇧 English · 🇳🇱 Nederlands
beatrax is a local-first personal finance dashboard that pulls together transactions from your bank, credit cards, PayPal, and app-store subscriptions into a single calm "this month at a glance" view. It reads the statement formats European banks already export — CAMT.053 (ISO 20022), MT940, and CSV — so it is not tied to any one institution. It then resolves the routing chains between your accounts (PayPal → your bank or card, card → bank via bulk SEPA settlement) so that fixed monthly payments, real underlying funding sources, and upcoming cash flow are visible in one place instead of buried across statements.
It runs entirely on your own machine. No telemetry. No cloud sync. No remote account. The SQLite database, the OAuth tokens, the cached email receipts — all live on your disk and never leave it unless you choose to export them yourself.
The product is source-available, not open-source in the OSI sense. The full source is here for you to read, run, and modify; the license adds ethical-use clauses on top of that. See NOTICE.md for the longer explanation.
beatrax is built for a single person — or a two-person household — managing their own finances across multiple bank, card, and payment-processor accounts who wants to see their monthly position in one place instead of cobbling together statements every cycle. It assumes you are technically literate enough to install a desktop application, grant OAuth permission to your Gmail or Microsoft Graph inbox if you want email-receipt scanning, and read a CSV or PDF when you need to.
If you bank exclusively with one institution that already gives you a great app, you probably don't need beatrax. If you split your spending across several banks, cards, PayPal, and recurring app-store subscriptions and have given up on reconciling them by hand, this is for you.
I want to start off with thanking my mom (Bea - for anyone who wondered where the name was based on), who's been the inspiration for making this.
There's a few things I wanted to try out with this project, and one of them was doing everything through prompting, and the quality of what can be delivered is amazing with GSD and Claude. Check GSD out here: https://github.com/gsd-build/get-shit-done
Among alot of other amazing packages (and for sure check out the composer.json), I'd like to highlight Laravel and NativePHP - it's amazing how far the PHP language has come in the last few years, and what you can do with it.
beatrax ships installers for macOS, Windows, and Linux. Pick the one for your platform.
beatrax is an independent app. macOS will warn you the first time you open it — that's expected.
- Open the downloaded beatrax.dmg and drag beatrax into your Applications folder.
- Right-click beatrax in Applications and choose Open.
- When macOS asks "are you sure?", click Open.
- From now on, double-clicking beatrax launches it normally.
Alternative (Terminal one-liner):
xattr -d com.apple.quarantine /Applications/beatrax.appLike most independent macOS apps, beatrax isn't signed with an Apple Developer ID — we don't pay Apple $99/year just to avoid the first-launch dialog. Why we made this choice →
The prebuilt installer ships an Apple Silicon (arm64) DMG only. GitHub's hosted macOS runners are all Apple Silicon now, and building an Intel bundle there under Rosetta 2 emulation routinely overruns the job timeout. Until that changes, Intel Mac users build from source:
git clone git@github.com:nightworksio/beatrax.git
cd beatrax
composer install
npm ci
cp .env.example .env
php artisan key:generate
php artisan native:install --publish --no-interaction --force
php artisan native:build mac x64
# Installer lands at nativephp/electron/dist/beatrax-<version>-x64.dmgFull local-dev prerequisites (Docker, Node 20+, PHP 8.5) are in .docs/local_development/setup.md.
beatrax is an independent app. Windows SmartScreen will warn you the first time you open it — that's expected.
- Run the downloaded beatrax-setup.exe.
- When you see "Windows protected your PC", click More info.
- Click Run anyway.
- From now on, beatrax launches normally from the Start menu.
SmartScreen reputation builds up over time as more people open beatrax. After a few weeks, the warning will stop appearing for new users automatically. Why we made this choice →
beatrax ships as both an AppImage (portable) and a .deb (Debian / Ubuntu native).
AppImage:
chmod +x beatrax-*.AppImage
./beatrax-*.AppImage.deb (Debian / Ubuntu / Mint):
sudo dpkg -i beatrax-*.debEvery release publishes SHA-256 checksums and an Ed25519-signed manifest. If you'd like to verify integrity:
sha256sum beatrax-{version}-{platform}.{ext}Then compare against the checksum file published with the release. For the deeper "is this manifest authentic?" check, see the verification runbook →.
A walk through the app — most are short gifs that step through 2–3 distinct states, the rest are stills.
A seven-step first-run flow: welcome → bank → PayPal → ICS card → email → review & commit → done. Each connector step is skippable so you can come back to it later from Settings.
The "this month at a glance" view with the cash-flow forecast highlight, in/out/net at the top, drift alerts, and email-scan health.
Browse, filter, and recategorize inline. Flip between EUR only and Original currency to reveal what a charge really cost — an app-store purchase settles in USD but the bank charge is in EUR, and the toggle shows both.
A keyboard-driven inbox for transactions that landed without a category. Pick a category per row (1–9 hotkeys assign the top categories, arrow-keys move, Enter saves), then Save categories commits the batch — and the rules ripple out to similar future imports.
Every merchant, bank, person, or self-account that has ever moved money in or out — with type chips, 12-month totals, average per month, and a sparkline of recent activity. Drill in for the full profile, recent transactions, aliases, and any detected funding chain.
When a transaction belongs to an IBAN beatrax has never seen, it lands here as an unknown counterparty with its recent activity. Type a display name, pick a type (Merchant / Personal / Bank / Government / Self), and one keystroke labels every transaction sharing that IBAN.
Approved subscriptions and fixed payments at a glance, with the monthly total computed across currencies. Each series opens a detail page with an amount-over-time chart and every occurrence.
Approved recurring series whose latest charge moved outside your threshold land here — with prior → current amounts, annualized impact, and quick actions (acknowledge, snooze, model a cancellation, or mark as already-cancelled). Acknowledged alerts flow into History.
30 / 60 / 90-day cash-flow projection across every account. Toggle between the aggregate line and per-account range-area charts, and overlay what-if scenarios (e.g. a summer-holiday cash outflow) to see the dip before it happens.
PayPal → bank and card → bank funding-chain resolutions, so you can see what really paid for what.
⌘K from anywhere to jump to a page, run a command, or invoke an
action. Type-ahead filters across views, dev commands, and actions —
artisan commands, system snapshot, profile, and more.
The diagnostic panel for inspecting ingestion state, queue health, SQL, logs, and the SQLite WAL — only visible when developer mode is on.
Contributors capturing fresh screenshots can populate a representative
demo dataset with php artisan demo:seed --reset once that command
lands in an upcoming release.
beatrax is in active development on the v0.x line. The shape and behaviour visible in this repository today is the work that the v1.0.0 release will bundle. See the release page on GitHub for the latest download.
See CONTRIBUTING.md.
beatrax is licensed under the Hippocratic License 3.0. It's source-available, not OSI-approved — see NOTICE.md for the rationale.
Report vulnerabilities via Security Policy.











