Skip to content

Latest commit

 

History

3,035 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Beatrax

A local-first personal finance dashboard for the unified picture of your cross-account money.

ci shared checks quality gate sonar issues coverage OpenSSF Scorecard License: Hippocratic 3.0 PHP 8.5+ Laravel 13 Status: v1.3 shipped · v2.0 in development

Website · Specification · Discord

What is Beatrax?

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 on your own machine. No telemetry, no Beatrax server, no cloud account: the SQLite database, the OAuth tokens and the cached email receipts live on the device you installed it on. One call goes out on its own — a check for a new version, which you can turn off. Everything else waits for you: a mailbox, a bank through Enable Banking, a daily exchange-rate lookup, the devices you pair for sync, a relay you configure, and any link you click. Each one says so on the screen where you turn it on.

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.

Who is this for?

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.

Thanks, mom

Thanks to my mom — Bea, for anyone who wondered where the name came from — who was the inspiration for making this.

Install

Beatrax ships installers for macOS, Windows, and Linux. Pick the one for your platform.

Installing on macOS

  1. Open the downloaded beatrax.dmg and drag Beatrax into your Applications folder.
  2. Double-click Beatrax.

That is the whole procedure. Released macOS builds are signed with an Apple Developer ID and notarised by Apple: the release workflow refuses to publish a macOS build unless every signing and notarisation credential is present, then re-opens the finished DMG and checks it with codesign, Gatekeeper and a stapled notarisation ticket before it is uploaded. A download from the Releases page opens without a first-launch dialog.

Two cases still show one, and for both the answer is the same — right-click Beatrax in Applications, choose Open, and confirm at the prompt; from then on it launches normally:

  • A bundle you built yourself. Without Apple credentials the build falls back to an ad-hoc signature, which Gatekeeper does not accept.
  • A download from v1.3.0 or earlier. Those artifacts predate the signing gate and really are unsigned. A current release does not need the step.

Intel Macs (x86_64)

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:beatrax-app/beatrax.git
cd beatrax
composer install
npm ci
cp .env.example .env
php artisan key:generate
php artisan native:install --publish --no-interaction --force
# The after-sign hook refuses to finish an un-notarized macOS build
# rather than warn and continue; this says the unsigned bundle is
# deliberate. The result is ad-hoc signed, so it needs the right-click
# → Open step above the first time you launch it.
NATIVEPHP_SKIP_NOTARIZE=1 php artisan native:build mac x64
# Installer lands at nativephp/electron/dist/beatrax-<version>-x64.dmg

Full local-dev prerequisites (Docker, Node 22+, PHP 8.5) are in .docs/local_development/setup.md.

Installing on Windows

  1. Run the downloaded beatrax-setup.exe.
  2. Follow the installer; Beatrax then launches from the Start menu.

The release workflow refuses to publish a Windows build unless every Azure Trusted Signing credential is present, and checks the produced installer's Authenticode signature before it is uploaded — so a release cut under that gate carries a publisher identity Windows can check.

Downloads from v1.3.0 or earlier predate the gate and are unsigned. If you see "Windows protected your PC", click More info and then Run anyway — or take a current release, which does not ask.

Installing on Linux

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-*.deb

Verifying the download

Every release publishes an auto-update manifest beside the installers — latest.yml, latest-mac.yml, latest-linux.yml — each carrying the installer's SHA-512, and each with a detached Ed25519 signature in a .sig file next to it. There is no separate checksum file: the manifest is where the hash lives, and the signature is what makes it worth trusting.

To check a download, compare its SHA-512 against the sha512 field of the manifest for its platform:

openssl dgst -sha512 -binary beatrax-{version}-{platform}.{ext} | base64

For the deeper "is this manifest authentic?" question — verifying the .sig against the publisher key the bundle carries — see the verification runbook →.

Screenshots

A full walkthrough of every surface — the setup wizard end to end, the dashboard, transactions, envelope budgets, the cash-flow forecast, counterparties and funding chains, drift and anomaly alerts, tax, goals and pots — lives on the website, alongside short recordings of the multi-step flows:

beatrax.app

Contributors capturing fresh screenshots can populate a representative demo dataset first with php artisan demo:seed --reset.

Project status

v1.3.0 "Local & in sync" is the current release (14 June 2026) — FX conversion, savings goals and pots, an installable PWA, PIN and biometric app-lock, the bills calendar, tax tagging with per-year export, full-text search, and anomaly alerts.

v2.0 is staged and is what this repository holds today — its locked goals are in the version manifest: local-first end-to-end-encrypted peer-to-peer device sync, a proactive notification inbox, an optional open-banking connector, envelope (zero-based) budgeting, split transactions, account reconciliation, a general rules engine, migration importers for YNAB and Actual, and a custom report builder. Wiring the mobile client as a fully synced peer and app-store distribution are the remaining pieces.

See the releases page on GitHub for the full history and the latest download.

Contributing

This project's specification is canonical: every change cites an identifier that already exists in it, and a behavioural change's spec pull request merges first. Before your first PR, read CONTRIBUTING.md, AGENTS.md if you are working with an AI assistant, and the contributing guide.

Implementation detail — which class, which file, which table — lives in .docs/. Behaviour, requirements, and architecture contracts live in the spec. Where the two disagree, the spec wins.

License + ethics

Beatrax is licensed under the Hippocratic License 3.0. It's source-available, not OSI-approved — see NOTICE.md for the rationale and the longer rationale in the spec.

Security

Report vulnerabilities via Security Policy.


NightWorks.io  ·  Discord

About

Local-first personal finance dashboard that resolves cross-account routing chains across banking, ICS Cards, PayPal, and Google Play.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages