Download
Download and install
The easy way: grab the desktop app for your system and install it like any other program. No terminal, no Node.js to set up by hand.
The installers aren't signed yet: Windows may show a SmartScreen warning (More info → Run anyway) and macOS will ask Gatekeeper for confirmation (right-click the app → Open). Prefer the terminal, or want the npm/tarball build? Continue with the chapter for tinkerers.
Chapter for tinkerers
One command, and you're in
Prerequisite: Node.js 22+ — the install downloads a prebuilt tarball (no build on the client); better-sqlite3 downloads a prebuilt native binary on most platforms.
$ curl -fsSL https://raw.githubusercontent.com/MichelePolo/Aether/main/scripts/install/install.sh | bash
> powershell -c "irm https://raw.githubusercontent.com/MichelePolo/Aether/main/scripts/install/install.ps1 | iex"
$ npm i -g https://github.com/MichelePolo/Aether/releases/latest/download/aether-core.tgz
$ pnpm add -g https://github.com/MichelePolo/Aether/releases/latest/download/aether-core.tgz
$ bun add -g https://github.com/MichelePolo/Aether/releases/latest/download/aether-core.tgz
curl and PowerShell verify Node, install the latest release and start Aether, opening the browser. With npm/pnpm/bun, run aether daemon start --open yourself after the install.
First run
Start and open
$ aether daemon start --open # start the server and open http://localhost:3000 $ aether daemon status # running/stopped + pid + port $ aether daemon stop
Uninstall
Remove Aether
$ aether daemon stop # stop the server, if running $ npm rm -g aether-core # pnpm: pnpm rm -g · bun: bun rm -g
Once the package is removed, the aether command disappears. Local data (sessions, SQLite DB, encrypted keys) lives in the data/ folder you started the daemon from — or in $AETHER_DATA_DIR if you set it. To delete it entirely: rm -rf data in that folder.
Troubleshooting
If something's off
Port 3000 is already in use
Aether binds to the PORT variable (default 3000). Pick another one:
$ PORT=3001 aether daemon start --open $ aether --port 3001 daemon start --open # from a clone, in dev: $ PORT=3001 npm run dev
Node missing or < 20
You need Node.js ≥ 20. Install it and re-run: winget install OpenJS.NodeJS.LTS (Windows), brew install node (macOS), or from nodejs.org. The install scripts check for it and stop with a clear message.
better-sqlite3 build error
If there's no prebuilt binary for your platform, it's compiled and you need build tools: Windows = "Visual Studio Build Tools" (C++ workload) + Python; macOS = Xcode Command Line Tools (xcode-select --install); Linux = build-essential + python3.
EACCES / permission denied on the global install
If npm's global prefix is owned by root, the -g install can fail with EACCES. Use a user prefix (no sudo):
$ npm config set prefix ~/.local # add ~/.local/bin to your PATH, then re-run the install
The browser doesn't open (SSH/headless)
Opening the browser is best-effort. If it doesn't start, open the printed URL manually: http://localhost:3000 (or the port you chose).