Installing Open Net Worth
There are three ways to run Open Net Worth. Pick one:
| Best for | You need | |
|---|---|---|
| A. Desktop app (recommended) | Using it on your own computer | Nothing else — it bundles everything |
B. Server with onw | An always-on machine you open from a browser or from the desktop app on other devices | A terminal |
| C. Docker | A home server or NAS that already runs Docker | Docker with Compose |
All three keep your data in one folder, ~/.open-net-worth/, outside the app itself. Updating
or reinstalling the app never touches it. There is no account to create and no .env file to
write.
Supported platforms
| Platform | Desktop app | Server (onw) | Docker |
|---|---|---|---|
| macOS | Apple Silicon only (signed and notarized) | Yes | Yes |
| Windows 10/11 | x64 | Yes (see the Windows note) | Yes |
| Linux | x86_64, AppImage or .deb | Yes | Yes |
Intel Macs and arm64 Linux have no desktop build yet — use the server or Docker there.
Option A: desktop app (recommended)
The desktop app bundles its own Python, the web interface and this help. You don’t install Python, Node or Docker.
macOS (Apple Silicon)
- Go to opennetworth.ai/download/mac and download the DMG.
- Open it and drag Open Net Worth into Applications.
- Open it from Applications.
Or install from Terminal (it checks the download’s checksum before installing):
curl -fsSL https://opennetworth.ai/install.sh | shWindows 10/11 (x64)
- Go to opennetworth.ai/download/windows and run the installer. It installs for your user only — no administrator prompt.
- The installer is not code-signed yet, so Windows SmartScreen may warn you. Click More info → Run anyway.
Or in PowerShell (checks the download against the release’s SHA256SUMS first):
irm https://opennetworth.ai/install.ps1 | iexTo refuse any installer without a valid signature, add -RequireSigned, or set
$env:ONW_REQUIRE_SIGNED = '1' before piping to iex.
Linux (x86_64)
Pick one:
- Terminal:
curl -fsSL https://opennetworth.ai/install.sh | sh— installs the AppImage to~/.local/bin/open-net-worthwith a launcher entry, nosudo, after checking its checksum. - AppImage: download it from opennetworth.ai/download/linux,
run
chmod +xon it, then run it. .deb: downloadOpen-Net-Worth-linux-amd64.debfrom the releases page, thensudo apt install ./Open-Net-Worth-linux-amd64.deb.
After installing
On first launch, click Get started, then choose where your book lives (Continue keeps the suggested folder; On your own server connects to a server you already run). Then follow Your first run.
To upgrade, the app updates itself (see Desktop app § Updates),
or re-run the terminal installer. To remove the app on macOS or Linux:
curl -fsSL https://opennetworth.ai/install.sh | sh -s -- --uninstall. Your book is never
removed.
Option B: run it as a server
The server is the same app as one process that serves both the API and the web interface on port 8080. You open it in a browser, or connect the desktop app to it from another computer.
macOS and Linux
-
Open a terminal and run the installer:
Terminal window curl -fsSL https://github.com/open-net-worth-ai/open-net-worth-releases/releases/latest/download/install-server.sh | shIt installs uv if you don’t have it, then installs
open-net-worthon uv’s own Python 3.12. You need no system Python or Node.js. The first install downloads a few hundred MB. It also adds~/.local/binto your shell’sPATHif it isn’t there yet — the installer then tells you to open a new terminal first. -
Start it and open it in your browser:
Terminal window onw start --open -
Your browser opens
http://127.0.0.1:8080. Follow Your first run.
Add --autostart to the end of the installer command (… | sh -s -- --autostart) to also start
it at login and restart it if it crashes.
Windows
The install-server.sh script is for macOS and Linux. On Windows, in PowerShell:
- Install uv:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" - Open a new PowerShell window and run
uv tool install --python 3.12 open-net-worth - Run
onw start --open
The onw command
| Command | What it does |
|---|---|
onw start | Run the app. --open opens your browser once it’s up; --port 9000 or --host 0.0.0.0 override the defaults (127.0.0.1:8080). |
onw autostart install | Start at login/boot and restart on crash — a launchd agent on macOS, a systemd user service on Linux, a Task Scheduler task on Windows. No sudo or admin. |
onw autostart status | Show whether that service is installed and running. |
onw autostart stop | Stop it and remove the service. |
onw upgrade | Update to the newest release. |
onw reset-password | Set a new password if you’ve forgotten it — see I lost my password. |
onw mcp | Let another AI app (Claude Desktop, Cursor…) use your book — see Connect AI apps. |
onw version | Print the installed version. |
On macOS and Linux, onw autostart logs go to ~/.open-net-worth/logs/.
To use this server from the desktop app on another computer, choose On your own server at setup — see Desktop app § Connect to a server. Before you open it from another device, read A note on network access.
Option C: Docker
-
Download the Compose file into an empty folder:
Terminal window curl -fsSLO https://github.com/open-net-worth-ai/open-net-worth-releases/releases/latest/download/docker-compose.yml -
Pick a password (at least 8 characters) and start it:
Terminal window AUTH_PASSWORD='pick a password' docker compose up -dIn Windows PowerShell, use
curl.exein step 1, and for step 2:$env:AUTH_PASSWORD='pick a password'; docker compose up -d. -
Open http://localhost:8080 and sign in with that password. First run continues from there.
The password is required under Docker — Compose refuses to start without it. Docker’s networking hides the fact that your browser is on the same machine, so without a password nothing could ever operate the app. Your first run § Docker explains this and what to do if you started without one.
To make the password stick, put AUTH_PASSWORD=... in a .env file next to
docker-compose.yml; Compose reads it on every up. It only sets the password the first time —
change it later in Settings → Security.
What the Compose file does:
- Pulls
ghcr.io/open-net-worth-ai/open-net-worth, pinned to the release the file came with (setONW_VERSION=x.y.zto run another one). - Publishes port 8080 on
127.0.0.1only, so other devices on your network can’t reach it until you change that line (the comment beside it explains the risk).PORT=9000picks another port. - Keeps your data in a Docker volume named
open-net-worth-data, which survivesdocker compose down(onlydocker compose down -vdeletes it). - Restarts the app after a crash or reboot (
restart: unless-stopped).
To update, download the new Compose file and run docker compose pull && docker compose up -d —
see Upgrading. To use a Claude or ChatGPT subscription from inside
the container, see Connecting an AI provider.
From source (developers)
For people working on the code. In a checkout of the source, with Python 3.12+ and Node.js 22+ installed (macOS or Linux):
make setup startmake setup creates .venv, installs dependencies and the onw command, builds the web
interface and this help, and migrates the database. make start runs it on
http://127.0.0.1:8080. make autostart runs setup, then onw autostart install.
CONTRIBUTING.md covers the two-process dev mode (uvicorn --reload + npm run dev) and the
test gate.
make seed fills an empty book with a fabricated example — about two and a half years of
accounts, transactions, holdings and a budget — so you can look around first. It refuses to run
on a book that already holds data.
A note on network access
On the machine running Open Net Worth, you’re trusted without a password — any browser or
program on that machine (localhost) can use it. That’s deliberate for a single-person app.
A password matters once you open it from anywhere else: another device on your network, a reverse proxy, or Docker (whose networking hides that you’re on the same machine).
Until a password is set, the server only opens on its own machine, so nobody else on the network can claim it first. Opening it from another device shows Set a password first: go to the computer it runs on, set one in Settings → Security, then click I’ve set it, sign in.
Forgot it? See I lost my password. Exposing it beyond your own machine is covered in Exposing it beyond localhost.
Troubleshooting
onw: command not foundafter installing —~/.local/binisn’t on yourPATHyet. Open a new terminal, or runuv tool update-shelland then open a new terminal.AUTH_PASSWORD is required for a Docker install— Compose stopped on purpose. Run theupcommand withAUTH_PASSWORD=...in front, or add it to a.envfile.- Port 8080 is already in use — start on another port:
onw start --port 9000, orPORT=9000 docker compose up -d. - The app won’t start — see The backend won’t start.
Related
- Your first run — what happens the first time you open the app.
- Desktop app — background mode, start at login, watched folders, updates.
- Upgrading — updating each kind of install.
- Where your files live — what’s in
~/.open-net-worth/. - Environment variables — optional overrides, such as
ONW_ROOTto keep your data elsewhere.