mrkeyoor.com_
Wed 16 Sept 05:27 UTC
Self-Hostedevaluationupdated 26 Aug 2026

actual review

Actual Budget is a local-first personal finance app built around envelope budgeting. It keeps day-to-day money data on your device, can synchronize it through a self-hosted server, and offers desktop apps for people who do not want to run a server.

+242stars / 7d
Verdict

Our Actual Budget checkout installed 2,608 packages and used 1,678 MB, then its all-platform build failed at missing xcodebuild and its test command ended with recorded timeouts, so contributors should expect a large multi-platform codebase rather than a tiny budget server. Use the packaged desktop app or documented server image if envelope budgeting and local ownership are the goal. Teams planning source changes should isolate the relevant workspace and reproduce the test failures before trusting a release build.

We ran it

Lab card: what happened when we ran actualScreenshot of actual (actualbudget.org)
Install✓ · 194s2608 packages · 1678 MB
Build✗ · 69s
Tests✗ · 626s9 passed · 0 failed of 9 (vitest)
Repo4072 files~305,186 lines of source · 72.3 MB · 38 CI workflows · Dockerfile

Answers from our run

Does actual build from source?

Dependencies installed in 194 seconds (2608 packages), and the build failed. We cloned commit 6ccb7ad into a clean Debian container with 3 CPUs and no project-specific setup.

Do actual's tests pass?

Yes: 9 of 9 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use actual?

Anyone who expects bank connections to work without provider setup: the current issue and pull request activity includes missing GoCardless server credentials and EU account-listing failures.

What are the alternatives to actual?

Firefly III, Ghostfolio, I Hate Money. Our Actual Budget checkout installed 2,608 packages and used 1,678 MB, then its all-platform build failed at missing xcodebuild and its test command ended with recorded timeouts, so contributors should expect a large multi-platform codebase rather than a tiny budget server.

Setup3/5Packaged routes are clear; source build reached missing Apple tooling
Docs4/5Install, migration, budgeting, and contributor docs are linked clearly
Community5/528,381 stars, an August 2026 push, and active issues and PRs
Maturity4/5Regular releases and several clients, with current sync bug reports

Discussed on

  1. hnActual4 points

Who it’s for

People who want envelope budgeting without handing every transaction to a hosted budgeting company.
Households willing to maintain their own sync server or pay a small managed host.
Developers who want an MIT-licensed TypeScript finance app with import and automation paths.
Users moving from another budget app who are prepared to check the documented migration options.

Who it’s NOT for

Anyone who expects bank connections to work without provider setup: the current issue and pull request activity includes missing GoCardless server credentials and EU account-listing failures.
Users who need every offline edit to appear reliably in the interface today: issue 8785 reports locally written transactions disappearing from view after the network drops mid-session.
Contributors on Linux who expect the top-level build to cover every platform: our build reached the iOS sync and then stopped because xcodebuild was unavailable.
People who want an investment tracker first: Actual's README centers envelope budgeting, accounts, and transactions, while Ghostfolio is designed around portfolios.

Setup reality

Our sandbox install succeeded in 194 seconds, adding 2,608 packages and using 1,678 MB. The build failed after 69 seconds when the mobile step reached iOS: CocoaPods was skipped, xcodebuild could not be found, and the command exited 1. Tests also exited 1 after 626 seconds; the combined log reported 1,079 passed, 1 failed, and 2 skipped in one suite, plus another 23 timeout failures and a separate 9 passing tests.

Running the product is a different path from building every target. The README offers managed hosting, Docker, and downloadable desktop apps. Sync requires an Actual server, while bank synchronization depends on supported providers and server credentials. Local-only desktop use avoids server administration.

The repository is a Yarn workspace with desktop, server, and mobile code. A Linux contributor can reach Apple-specific tooling through the top-level build, as our xcodebuild failure shows. Pick the package or documented deployment path that matches the platform you intend to operate.

Actual keeps the budget local and syncs it on your terms

Actual is an envelope-budgeting application for recording accounts, assigning income, importing transactions, and checking spending against a plan. The local-first design means the working copy lives on the device. A synchronization server moves changes between devices when you want that shared view. This is an appealing arrangement for a household that dislikes a finance company holding the only usable copy of its budget.

There are 4 installation routes in the README: PikaPods, Fly.io, a self-hosted Docker image, and downloadable desktop apps for Windows, macOS, and Linux. That range matters because running Actual does not require becoming its operator. The desktop route suits one machine. A managed service suits a household that wants sync without patching a server. Docker gives an experienced self-hoster control over storage, TLS, backups, and upgrades.

Envelope budgeting is the product, not portfolio analysis

The README sends new users straight to an envelope-budgeting guide and separate migration documentation. That tells you where Actual's opinion lies. Money is assigned to categories, transactions update those categories, and the budget remains the main screen. People moving from another application should inspect the relevant importer before committing, since a clean import is far more important than a polished empty dashboard.

Actual's GitHub repository had 28,381 stars and 216 combined open issues and pull requests when fetched. The latest release was v26.8.1, published on August 7, 2026, and the repository was pushed again on August 25. Those dates show current work around a released product. The combined open count cannot be read as 216 bugs, but the active queue gives prospective operators useful evidence about current edge cases.

What happened when we ran it

Our sandbox installed the Yarn workspace in 194 seconds. It pulled 2,608 packages and occupied 1,678 MB on disk. The checkout itself contained 4,072 files, about 305,186 source lines, and 72.3 MB before installation. Those figures describe a multi-client finance product with desktop, server, and mobile pieces, not a small Node service that happens to display a budget.

The top-level build ran for 69 seconds and exited 1. Its final lines show Capacitor copying and updating the iOS project, skipping CocoaPods because it was absent, warning that xcodebuild could not be found, and then stopping at command not found: xcodebuild. The log establishes the missing command. It does not establish that every Linux or server build needs Apple tooling, so contributors should use the documented target for the package they intend to change.

Tests ran for 626 seconds and also exited 1. One reported Vitest group ended with 1,079 passed, 1 failed, and 2 skipped across 1,082 tests; the failure was a 5,000 ms timeout. Another part recorded 23 tests failing by a 20,000 ms timeout, while a separate pair of files recorded 9 passes. The supplied output is mixed across commands, so we will not collapse it into one invented total. The useful conclusion is that the complete command did not pass in our 3-CPU, 8 GB Debian sandbox.

Bank sync adds credentials and provider-specific failure modes

Manual budgeting and file imports avoid a bank integration, while automatic bank synchronization introduces provider accounts, server configuration, and failure handling. Recent repository activity includes work to explain failures caused by missing GoCardless server credentials. Issue 8788 reports an EU banking connection that does not list the expected account. These are specific reminders that self-hosting the application does not make a third-party banking connection local or universal.

Offline behavior deserves a trial with your normal devices. Issue 8785 reports that transactions and payees written locally can fail to appear in the interface after connectivity is lost mid-session. The report says the data exists locally, which is better than silent deletion, but an invisible money entry is still a serious workflow problem. Anyone relying on mobile entry should test a network drop, reconnection, and a second-device sync before importing a full history.

Source contributors inherit desktop, server, and mobile concerns

The repository is a monorepo, and our scan found 38 CI workflow files, a Dockerfile, and a Compose file. Its package layout includes the core application, desktop client, and Electron app, while the measured build also entered Capacitor's iOS work. That breadth explains both the 1,678 MB installed footprint and why a generic build command can cross into tools absent from a fresh Debian container.

For deployment, start with the supported artifact closest to the intended use. A single user can try the desktop app without exposing a server. A household can trial managed sync before accepting backup and upgrade duties. A self-hoster should document the data volume, backup restoration, HTTPS endpoint, and bank-provider secrets. The MIT license permits modification, though financial data still demands cautious access control and tested recovery.

Current maintenance supports adoption, while open sync reports require testing

A push on August 25, 2026, a release earlier that month, and busy issue and pull request activity make Actual look maintained. The documentation has separate tracks for installation, starting fresh, migration, budgeting, and contribution. That is enough to recommend a real trial for envelope-budget users who value local data and can choose the right deployment route.

The lab result changes the advice for contributors. A 194-second install, 2,608 dependencies, an Apple-tooling build stop, and timeout failures call for package-scoped commands and a reproducible development environment. End users should prefer the release artifacts. Developers should first reproduce the relevant workspace, then check offline edits and bank sync with the exact providers their users depend on.

Alternatives

ProjectWhat it isPick it when
Firefly III gh↗A self-hosted personal finance manager with detailed transaction and rule handling.pick this instead when accounting-style records and rules matter more than Actual's envelope-budget workflow.
GhostfolioA self-hosted wealth dashboard focused on holdings, allocation, and portfolio history.pick this instead when investments and net-worth tracking are the main job.
I Hate MoneyA shared-expense tracker for trips, households, and small groups.pick this instead when you only need to split expenses and settle balances.

Sources

  1. Actual Budget repository and README
  2. Actual Budget v26.8.1 release
  3. Offline transaction visibility report
  4. EU bank account listing report
  5. Actual Budget installation documentation

More self-hosted reviews

newsnow · forem · octo-server · runtime · openfang · SparkyFitness · the whole board →