ADHDev Self-Hosted is a self-hosted control plane for AI coding agent sessions. As agents become long-running background workers, ADHDev gives you one local dashboard to see which session is still running, waiting for approval, finished, stuck, or ready for the next instruction.
It is not trying to replace the underlying IDEs or agents. The goal is to give them a dedicated control surface: inspect active sessions, review chat and terminal state, approve or interrupt work, reopen the right history, and send the next instruction from one place.
For the standalone path, everything runs on your machine as a local daemon with an embedded web dashboard. No cloud account or hosted control plane is required.
Website: https://adhf.dev Docs: https://docs.adhf.dev
This repo contains the open-source, self-hosted edition:
- the standalone local server and dashboard
- the shared daemon/runtime packages used by both standalone and cloud
- the session-host and terminal-mux stack for hosted CLI runtimes
Hosted cloud operations are not part of this repository.
These are the integrations currently working or explicitly tested enough to call out near the top:
- IDEs: Cursor, Google Antigravity, VS Code, Kiro
- IDE extension integrations: Codex, Claude Code
- CLI agents: Hermes Agent, Codex CLI, Claude Code CLI
Other providers and adapters exist in the shipped inventory, but many are still incomplete, experimental, or not yet verified enough to present as fully supported. For the current support policy and caveats, see:
|
|
ADHDev Self-Hosted is built around three local layers:
daemon-standaloneexposes a local HTTP/WebSocket server and serves the web UI.daemon-coremanages IDE, CLI, extension, and ACP integrations.session-host-daemon(adhdev-sessiond) owns long-lived PTY runtimes so CLI sessions can survive daemon restarts.
Everything runs on your machine by default. There is no cloud account requirement for the standalone path.
Recommended path:
npm install -g adhdev
adhdev standaloneDirect standalone package:
npm install -g @adhdev/daemon-standalone
adhdev-standaloneOpen http://localhost:3847.
Useful flags:
adhdev standalone --host
adhdev standalone --port 8080
adhdev standalone --token mysecret
adhdev standalone --no-open
adhdev standalone --devWhat those choices mean in practice:
- plain
adhdev standalone= localhost-only dashboard on this machine --host= other devices on the same LAN can open it too--token= best for scripts, curl, and operator-style access- dashboard password = best for normal browser users who should see a login prompt
--hostwith no token and no password = warning-first LAN exposure, not a hard block
Standalone stays localhost-only by default. If you bind to 0.0.0.0 for LAN access, the dashboard warns when neither token auth nor a dashboard password is configured.
The standalone UI already includes both settings surfaces:
SettingsβDashboard Security- enable password
- update/change password
- disable password
SettingsβNetwork Access- save default localhost-only vs all-interfaces bind mode for future launches
SettingsβAppearanceβFonts- standalone-only overrides for chat text, markdown/code blocks, and terminal/tool rows
- saved alongside standalone network preferences under
~/.adhdev/standalone-network.json
Current standalone UX defaults:
- ordinary CLI and ACP launches start fresh by default
- use
Open saved historywhen you want continuity in the same provider conversation - hosted runtime recovery is a separate interruption flow, not part of the ordinary new-session CTA
- if the local dashboard drops its websocket connection, the banner now exposes
Reconnect now
Canonical self-hosted docs:
Windows note:
- Windows + Node.js 24+ is currently blocked for normal startup/install paths.
- Use Node.js 22.x, or use the PowerShell installer path described in the docs.
| Path | Purpose |
|---|---|
packages/daemon-core |
Shared engine: providers, CDP, command routing, session/runtime state |
packages/daemon-standalone |
Local HTTP/WS server and bundled standalone UI |
packages/web-core |
Shared React pages, components, hooks, and transport abstractions |
packages/web-standalone |
Standalone dashboard app |
packages/web-devconsole |
Provider/dev diagnostics UI |
packages/session-host-core |
Session-host protocol, client, registry, ring buffer, labels |
packages/session-host-daemon |
Long-lived PTY runtime owner process |
packages/terminal-mux-* |
Local terminal mux stack |
packages/terminal-render-web |
Browser-side terminal rendering support |
packages/ghostty-vt-node |
Ghostty VT bindings used by runtime/mux layers |
ADHDev ships a broad built-in inventory of IDE, extension, CLI, and ACP integrations, including 35 ACP adapters.
Important distinction:
- built-in means the integration exists in the shipped inventory
- verified means it has explicit validation evidence
Do not treat inventory presence as blanket support. Current verification policy lives here:
The standalone server currently exposes:
GET /api/v1/statusPOST /api/v1/commandGET /api/v1/runtime/:sessionId/snapshotGET /api/v1/runtime/:sessionId/eventsGET /api/v1/mux/:workspace/stateGET /api/v1/mux/:workspace/socket-infoPOST /api/v1/mux/:workspace/controlGET /api/v1/mux/:workspace/eventsws://localhost:3847/ws
Canonical runtime contract:
GET /api/v1/statusand itssessions[]array are the source of truth- runtime targeting should use raw
targetSessionId - older per-surface projections should be treated as convenience views, not the canonical model
Reference:
Hosted CLI runtimes are managed through adhdev-sessiond.
Key properties of the current design:
- PTY ownership is separated from the main daemon process
- CLI sessions can reconnect after daemon restarts
- write ownership is explicit and single-owner
- diagnostics and recovery actions are exposed through the daemon control plane and standalone UI
See:
From source:
git clone https://github.com/vilmire/adhdev.git
cd adhdev
npm install
npm run build
npm run devUseful workspace scripts:
npm run dev:daemon
npm run dev:web
npm run dev -w packages/web-devconsole| Feature | OSS | Cloud |
|---|---|---|
| Local-only dashboard | β | β |
| Remote access outside LAN | β | β |
| Multi-machine management | β | β |
| API keys and hosted webhooks | β | β |
| OAuth / account system | β | β |
| Push notifications | β | β |
| Team / sharing features | β | β |
AGPL-3.0-or-later. See LICENSE.



