Your personal finance copilot. Track every account, asset, and cash flow in one place — fully offline, fully yours.
Built with Flutter for macOS, Windows, and Android. All data lives in a local SQLite file. Optional Google Drive sync if you want it across devices; nothing leaves your machine if you don’t.

🟢 full · 🟡 partial / limited / self-host / manual · 🔴 none · — not applicable
| FinanceCopilot | Mint / Monarch | YNAB | Actual Budget | Firefly III | Maybe Finance | GnuCash | |
|---|---|---|---|---|---|---|---|
| Runs fully offline | 🟢 | 🔴 | 🔴 | 🟢 | 🟡 self-host | 🟡 self-host | 🟢 |
| No subscription | 🟢 | 🟡 Mint free | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 |
| No server to host | 🟢 | — | — | 🟢 | 🔴 | 🔴 | 🟢 |
| Bank accounts + cash | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
| Stocks / ETFs / bonds | 🟢 | 🟡 | 🔴 | 🔴 | 🟡 | 🟢 | 🟡 |
| ETF composition + TER | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🟡 | 🔴 |
| ISIN-first matching | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
| Multi-currency + FX history | 🟢 13, daily | 🟡 | 🔴 | 🟡 | 🟢 | 🟢 | 🟢 |
| CSV / Excel / PDF import | 🟢 | 🔴 | 🟡 CSV | 🟡 CSV | 🟡 CSV | 🟡 CSV | 🟡 CSV/QIF |
| Mobile + desktop | 🟢 both | 🟡 web/mobile | 🟢 both | 🟡 web | 🟡 web | 🟡 web | 🟡 desktop |
| Open source | 🟢 MIT | 🔴 | 🔴 | 🟢 MIT | 🟢 AGPL | 🟢 AGPL | 🟢 GPL |
Ratings reflect each tool’s commonly-available configuration as of 2025; self-hosted and paid tiers can change a cell. If a rating looks off or FinanceCopilot is missing a feature you actually use, open an issue — happy to correct it.
Most personal-finance apps either lock you to a specific bank, ship your transactions to a cloud provider, or stop at simple budgeting. FinanceCopilot covers the full picture — bank accounts, ETFs, stocks, bonds, pension funds, crypto, real estate adjustments — and pulls market data on its own. No subscriptions, no servers, no telemetry.
KPI scoring across Liquidity, Wealth, and Performance & Diversification, with a single overall gauge. Each indicator opens a popover with the formula and the actual numbers behind it.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Period-selectable price-change table (1D/1W/1M/3M/6M/1Y/YTD/All) plus the Totals breakdown (assets, savings, invested, cash, portfolio) with vs‑ATH deltas and drill-down per row.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
The global Wayback controls now let you pin the whole app to a historical date, last month-end, or last year-end so dashboards, assets, and pillars all render from the same point in time.
Saving vs moving-average chart, expenses vs MA & cash, and velocity. Configurable MA window per chart.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Geographic, sector, asset class, instrument type, currency, and top-holdings donuts. Composition resolved automatically for ETFs and stocks; click any slice to drill into the contributing assets.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Below the fold: currency exposure, top holdings, concentration risk (Top 1 / 3 / 5 share, Herfindahl index), and a per-asset investment costs table with weighted-average TER.

All holdings grouped by intermediary, with ticker, ISIN, event count, and per-asset performance. Swipe-to-delete and bulk-edit selection.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Full event history (buy / sell / revalue), composition breakdown (asset class / geographic / sector / top holdings), and price chart. Bond pricing handles per-100 quoting; ETFs auto-fetch TER and holdings.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Group assets and accounts into goal-oriented buckets (e.g. Lombard support, FIRE, Offspring) with their own value, target, and progress bar.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Each pillar drills into its own objective, history chart, and per-asset allocation slider — set how much of every holding contributes to the bucket, with a free residual that auto-balances against the other pillars.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Portfolio Models now sit alongside Pillars: 32 built-in models are preloaded from the catalog, custom models can be created in-app, and each pillar can be linked to a target model to inspect divergence by ISIN, extra holdings, and unresolved items.
From the same flow, rebalance can build either Sell and buy or Buy only draft transactions with tax estimate, whole-unit execution, live market-data resolution for missing target assets, and an explicit apply step instead of writing trades immediately.
Map any bank or broker CSV / Excel / PDF onto Transactions, Asset Events, or Income. PDF bank statements are reconstructed into tables automatically (no per-bank templates). A Refine rows & columns panel adds row filters and column splits before mapping; plus ISIN-driven exchange picker, per-row exclude, formula columns, status filtering, and multi-column amount math.

brew tap marcobazzani/financecopilot
brew install --cask financecopilot # stable
brew install --cask financecopilot-nightly # latest develop
Pre-built binaries for macOS, Windows, and Android on the Releases page. The nightly build tracks develop.
macOS and Windows binaries are not code-signed. On macOS you may need to allow the app via System Settings → Privacy & Security the first time. Endpoint security tools that re-sign binaries on extraction (CrowdStrike, SentinelOne, …) will break Homebrew install — use the DMG instead.
Prerequisites: Flutter SDK ^3.8.1, Xcode (macOS), or Visual Studio with Desktop C++ workload (Windows).
flutter pub get
dart run build_runner build --delete-conflicting-outputs
# Verify formatting
dart format --output=none --set-exit-if-changed lib test integration_test
# macOS
flutter build macos --release
# Windows
flutter build windows --release
# Android APK
flutter build apk --release
# Unit tests (~900, ~20s)
flutter test
# Integration tests (4 suites, ~5m, requires a running desktop device)
flutter test integration_test/all_tests.dart -d macos \
--dart-define=DB_FILE_NAME=finance_copilot_test.db
# Live market-data smoke test (~1m, requires network)
flutter test integration_test/live_data_fetch_test.dart -d macos \
--dart-define=DB_FILE_NAME=finance_copilot_test.db
# Apply the repo's locked formatter settings
dart format lib test integration_test
# Check that formatting is clean without rewriting files
dart format --output=none --set-exit-if-changed lib test integration_test
valueDate (when the money actually moved) drives display, ordering, charts, and balance computation; operationDate is only used for import dedup| Layer | Stack |
|---|---|
| Framework | Flutter / Dart |
| Platforms | macOS, Windows, Android |
| State | Riverpod |
| DB | Drift (SQLite) |
| Charts | fl_chart |
| Import | csv, excel, file_picker, pdfrx |
MIT.