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.

Windows

.exe installer · 64-bit

macOS

.dmg disk image

Linux

.AppImage or .deb package

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).