27.2k stars · MIT · v26.9.0 (2026-09-01), read from /releases/latest; the About sidebar showed the older v26.6.0, so the latest page is the one to trust · Track this in Scout
An envelope-method budgeting application that keeps its data on your own device or your own server and works offline, syncing when the connection returns.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A budgeting application built around the envelope method, where you assign every available amount to a named category before any of it is spent. It keeps its data on your own device or your own small server and syncs between the two.What it is good for. A solo founder whose business money and personal money live in the same account, which is most of them in the first two years. It answers one question that no dashboard answers: how much of what is in the account is already promised to something. It is not accounting — Edition 18 gave you InvoiceShelf (#8) for invoices, and hledger below is for the books.
- MIT licence and self-hosted, so your bank data is not sitting inside somebody's sales platform.
- It works offline and syncs afterwards, so a plane or a bad connection changes nothing.
- It imports the file formats most banks offer, including CSV, OFX and QFX.
- It is a personal budgeting tool, not business accounting. Your accountant will still want proper books.
- Automatic bank connections need a separate service that you set up and maintain yourself. That is the fiddly part, and many people skip it and import files by hand.
- Envelope budgeting needs two or three weeks of habit before it starts repaying the effort. It is a method, not a screen.
- firefly-iii/firefly-iii
The same self-hosted personal finance job with proper double-entry bookkeeping and a REST API, heavier to run because it needs PHP and a database.
Track this in Scout - ghostfolio/ghostfolio
Tracks what your investments are worth rather than what your spending is planned to be, so it answers the opposite question.
Track this in Scout
simonmichael/hledgerRecords what already happened in a plain text file instead of planning what will happen, which is why both are on this page.
Track this in Scout
# Needs Docker. mkdir -p ~/actual-data docker run --pull=always --restart=unless-stopped -d \ -p 5006:5006 \ -v ~/actual-data:/data \ --name my_actual_budget \ actualbudget/actual-server:latest # then open http://localhost:5006 and set a password on first use # to update later: docker pull actualbudget/actual-server:latest

