No accounts • No sync • No Plaid

Your bank data. Your Mac. Zero cloud.

Import bank CSVs into a local SQLite database, categorize with rules that learn over time, set budgets, and export back to CSV. Optional local LLM via llama.cpp for unknown merchants. Open source, MIT licensed.

macOS Apple Silicon (M1+). Not code-signed yet — right-click → Open to bypass Gatekeeper.

Web demo runs in the browser with local demo data (stored in localStorage) so reviewers can test the workflow by link.

Trust pack

What we guarantee

  • Open source — read every line.
  • Local-only data: SQLite in your app data directory.
  • No accounts, no sync, no telemetry by design.
  • Categorization runs locally (rules + learned rules).
  • Model is optional: without it, unknown merchants fall back to "other".

Want to verify offline behavior? See Privacy or run lsof -i while the app is open.

Screenshots

Click to enlarge

Fast import

CSV → local database

Import Chase CSV formats, deduplicate by hash, and keep a clean ledger.

Budgets

Monthly limits

Set per-category limits and see spent/remaining for the selected month.

Explainability

Why this category?

Each transaction shows where its category came from (rule / learned / LLM / manual).

Web demo

Test Ledgr in your browser

Use the interactive demo to try CSV import, category edits, learned rules, budgets, and CSV export before installing the desktop app.

Note: the web demo simulates the workflow with browser-stored data. Full native functionality remains in the Tauri desktop build.

Pricing

Ledgr is free and open source (MIT). Download the DMG from GitHub Releases or build from source.

If you find it useful, star the repo or open an issue with feature requests.

Feedback

Found a bug? Want a new bank format? Have ideas?