Standalone (Self-hosted)
Standalone mode runs ADHDev without any account, on a machine you control. It bundles the local dashboard, the local HTTP/WebSocket API, and the session-host runtime into a single process — no account, no cloud connection, no P2P, no TURN.
It is the AGPL-3.0 open-source surface of ADHDev, published as @adhdev/daemon-standalone.
When to use it
Standalone is the right choice when everything you want to control is on the machine in front of you — or on a machine you can reach directly over your own LAN.
It is not a self-hosted replacement for the cloud dashboard. Standalone deliberately does not include:
- Push notifications — no approval, completion, or disconnect notifications to your phone
- Remote access over the internet — there is no signaling server, so there is no connection from outside your network
- Account-linked fleets and machines outside your network — standalone machines can pair with each other when they can reach each other directly (same network or Tailscale), but there is no cloud relay
Those are cloud features. If you want them, see Getting Started for the cloud daemon.
Start it
npm install -g adhdev
adhdev standaloneadhdev standalone is a thin wrapper: it resolves and launches the @adhdev/daemon-standalone package, matching the npm channel your CLI came from. You can also run the OSS package directly:
npm install -g @adhdev/daemon-standalone
adhdev-standaloneOr without installing anything globally:
npx @adhdev/daemon-standaloneThen open http://localhost:3847.
What should happen: the dashboard loads and shows your local machine. There is no login screen — standalone has no accounts.
TIP
The publicly install-tested paths are macOS and Windows. Linux may work for standalone, but it has not been validated enough to present as a supported path.
Ports and binding
The standalone server serves the dashboard and the HTTP/WebSocket API from one port, 3847 by default, bound to 127.0.0.1 (loopback only).
adhdev standalone --port 4000LAN access
To reach the dashboard from another device on your network, bind an address other than loopback:
adhdev standalone --host 0.0.0.0 --token <some-secret>--host takes an explicit address — an IPv4 address, an IPv6 address, or localhost. There is no boolean form: a bare --host with no value, or an unrecognized value, is a visible startup failure rather than a silent bind you did not ask for.
WARNING
--host 0.0.0.0 (or the IPv6 any-address ::) binds every interface. Standalone has no authentication by default, so anyone who can reach the port gets full control of your agents. Always pair a public bind with --token. The server prints a warning at startup when you bind publicly without auth.
--token requires that token before the dashboard will connect. This is the only dashboard auth mechanism standalone has.
Pairing another machine into a mesh this daemon hosts needs the same kind of address: bind 0.0.0.0 or a LAN/Tailscale IP, not the default loopback. Mesh peers do not use the dashboard token; each authenticates with its own pairing secret. See Multi-Machine.
Flags
| Flag | Purpose |
|---|---|
--port, -p <port> | Port for the HTTP/WS server (default 3847) |
--host, -H <address> | Explicit bind address — IPv4, IPv6, or localhost (default 127.0.0.1) |
--token <token> | Require this token to use the dashboard |
--dev | Enable DevConsole for writing and testing provider scripts |
--public <path> | Custom path to the dashboard distribution |
--no-open | Do not open the browser on startup |
--help, -h | Show usage |
What works in standalone
Once the dashboard is up, the local agent surface behaves the same as in cloud mode:
- Detecting and launching CLI agents
- Reading chat, sending messages, and answering approval prompts from the dashboard
- Session listing, switching, and the terminal view
- The MCP server in local mode, which talks to
http://localhost:3847
Standalone vs cloud
| Standalone | Cloud | |
|---|---|---|
| Account required | No | Yes |
| Transport | Direct HTTP/WS on your machine | P2P WebRTC, with TURN for blocked NATs |
| Reachable from the internet | No | Yes |
| Machines per dashboard | One | Plan-dependent |
| Push notifications | No | Yes |
| Auth | Optional --token | OAuth, API keys, machine secrets |
| License | AGPL-3.0 | Proprietary |
Deeper configuration
The OSS repository carries the reference documentation for standalone internals — password auth, saved host defaults, local config file locations, the local API surface, and the session-host runtime:
