A single native workspace for every AI coding agent.
macOS, iOS, CLI — synced in real time.
Website · Docs · Download · Changelog
ADE runs Claude Code, Codex, Cursor, opencode — every major AI coding agent — inside one native workspace. Claude runs through the bundled Claude Agent SDK, while desktop and ade code share the same lane-scoped chat runtime. Every task is its own git worktree, so agents ship features in parallel. Review and merge PRs in-app. Approve a diff from your phone while another agent tests on your Mac.
Free, open source, local-first. Bring your own keys or subs.
Plus files, terminals, git history, workspace graph, multi-tasking, Linear sync, cron automations, computer-use proofs, and the ade CLI.
Download the DMG from GitHub Releases, drag ADE.app into /Applications, open it on any git repo, and add a provider key (or subscription) in Settings. Runs in Guest Mode without an account.
Requirements: macOS 13+, git on PATH, Node 22+ for headless CLI workflows.
ade desktop
ade runtime status --text
ade runtime start
ade runtime stop
ade doctor --json
ade code
ade lanes create --name fix-checkout-flow
ade prs checks 168 --text
ade tests run --suite unit --wait
ade actions list --text # discover every service actionLocal-first, on purpose. The center of ADE is the runtime daemon — a single per-machine ade service that owns projects, lanes, chats, processes, sync, and proof artifacts. Desktop, the terminal client, the iOS app, and SSH-attached desktop windows all attach to it as clients. Runtime state lives under .ade/ inside each project (SQLite db, worktree checkouts, proof artifacts, encrypted secrets) and the machine-wide socket lives under ~/.ade/sock/ade.sock. When desktop is running, its Electron main process also hosts a bridge socket at ~/.ade/sock/desktop-bridge.sock (override: ADE_DESKTOP_BRIDGE_SOCKET_PATH) so the headless daemon can proxy ade browser … calls into the Electron-only WebContentsView APIs it can't reach under ELECTRON_RUN_AS_NODE=1.
apps/ade-cli ADE runtime daemon (`ade serve`) + `ade` CLI + `ade code` terminal client
apps/desktop Electron client — multi-window, attaches to a local or SSH-bound runtime
apps/ios SwiftUI controller that attaches to a runtime over WebSocket
apps/web Public website and download surface
docs/ Product and engineering docs
Deep reference: ARCHITECTURE.md.
First-time setup:
npm run setupDaily desktop dev:
npm run devThat aliases to npm run dev:desktop: it rebuilds apps/ade-cli, refreshes the shared dev runtime at /tmp/ade-runtime-dev.sock when needed, launches the Electron desktop app, and points desktop at that runtime. This is the normal desktop-dev flow.
When these commands are run from an ADE lane worktree under .ade/worktrees/,
they still run code from that lane checkout, but they open the primary checkout's
project data by default. For example, running from
/path/to/ADE/.ade/worktrees/my-lane opens /path/to/ADE as the ADE project
and uses the lane path as the workspace root for dev:code.
Dev command matrix:
npm run dev:desktop # refresh shared dev runtime, then launch desktop
npm run dev:desktop:attach # desktop only; fail if dev runtime is not already running
npm run dev:desktop:clean # desktop only; clear Vite cache before launch
npm run dev:code:web # `ade code` in the browser (PTY + inspector WebSocket)
npm run dev:code:attach # terminal TUI only; fail if dev runtime is not already running
npm run dev:runtime # runtime only in the foreground
npm run dev:all # start shared dev runtime, then run desktop/code attach commands in separate terminals
npm run dev:stop # stop the dev runtime
npm stop dev # same as dev:stopBrowser preview of the desktop renderer (UI work without Electron):
cd apps/desktop
npm run dev:vite # mock-only: synthetic window.ade, fast shell
ADE_PROJECT_ROOT=/path/to/project npm run dev:vite:live # mock + live runtime bridge (Linear, sync, lanes)dev:vite:live starts the ADE dev runtime, a localhost HTTP bridge to the runtime socket, and Vite with a proxy so the browser can call real backend methods on top of the mock. Set ADE_PROJECT_ROOT to your primary project checkout (where .ade/ and secrets live), especially when working from a lane worktree. Full details: apps/desktop/README.md.
The dev commands intentionally use a temp socket and a separate Electron profile so they do not collide with the installed ADE app:
/tmp/ade-runtime-dev.sock
~/Library/Application Support/ade-desktop-dev
Override it when needed:
npm run dev:desktop -- --socket /tmp/my-ade-dev.sock
npm run dev:code -- --socket /tmp/my-ade-dev.sock
ADE_DEV_RUNTIME_SOCKET_PATH=/tmp/my-ade-dev.sock npm run dev:runtime
ADE_DESKTOP_BRIDGE_SOCKET_PATH=/tmp/my-bridge.sock npm run dev:desktopTo test auto-runtime creation, use the default dev commands after stopping the dev runtime:
npm run dev:stop
npm run dev:desktop # tests the desktop wrapper creating the dev runtime
npm run dev:stop
npm run dev:code # tests TUI wrapper creating the dev runtimeLocal packaged builds:
npm run package:alpha # current checkout -> ADE Alpha.app, ade-alpha, ~/.ade-alpha
npm run package:beta # origin/main -> ADE Beta.app, ade-beta, ~/.ade-betaThese are unsigned local macOS app builds under apps/desktop/release-alpha and apps/desktop/release-beta. Beta fetches origin/main, fast-forwards the local main checkout when possible, and builds that checkout as ADE Beta. It does not create a packaging worktree. These builds do not replace the production ADE.app, production ade, or ~/.ade runtime/state. Alpha and Beta also use separate Electron profile directories (ade-desktop-alpha / ade-desktop-beta) so their browser storage and window state do not collide with dev or stable.
Local channel packages include the host runtime binary for this Mac. Release builds still require the full cross-platform runtime artifact set used by remote runtime bootstrap.
Validate with npm --prefix apps/desktop run typecheck and npm run test:desktop:sharded for the full desktop suite. The desktop test suite is large, so run the smallest relevant subset first.
Quickstart · Key concepts · Worktrees · Computer use · Changelog · Contributing
AGPL-3.0 — © 2025 Arul Sharma. Free forever. Source on GitHub.






