Skip to main content
Optional UI:
Requires Node 22. The packages ship ESM + CJS.

Isolated home

Pass a directory your app owns. The sidecar stores thread keys and runtime state there. Never point it at the developer’s ~/.ade or at ADE’s default machine socket.
In Electron, use the main process and a path under userData:
Two clients on one home fight over the same socket and SQLite root. Open one client per isolated home.

Where ade comes from

Resolution order:
  1. binaryPath — pin a specific build; skips everything below.
  2. An installed @ade-dev/runtime-<target> platform package.
  3. A previously downloaded binary in the home cache.
  4. ade on PATH (optional; tests can disable this).
  5. Download from the ADE GitHub release, fail-closed against that release’s SHA256SUMS.
The platform package sits directly below the pinned path because installing it is itself an explicit act: it is in your lockfile and inside your bundle, and a download must never quietly take precedence over the copy you signed. allowDownload: false is what a shipping app wants. A packaging mistake then fails loudly in QA rather than working through a silent download on the developer’s machine and failing on a locked-down user’s. channel: "latest" downloads the newest runtime, which can be outside the range this SDK supports. See Version compatibility. Downloads verify checksums before the binary is used. A mismatch is a hard error (checksum_mismatch), not a warning. The pinned and bundled routes skip that check by design: bytes you signed into your own bundle are verified by the OS.

Bundling

Ship the runtime inside a signed app: platform packages, codesign lines, entitlements, electron-builder.

Electron

Run @ade-dev/sdk from the main process, not the renderer. Spawn owns a child process and a Unix socket (or a Windows named pipe), and a sandboxed renderer has neither. Do not write the bridge yourself. @ade-dev/sdk/electron ships it: one function per process, listener teardown on reload, and the history-and-live ordering rule in code.

Electron bridge

registerAdeIpc, exposeAdeBridge, createAdeIpcClient, and what sandbox: true requires.

Windows

The sidecar is a supported host. Named pipes are hashed from home + user identity. taskkill / tar are resolved through the kernel GLOBALROOT System32 alias, never from PATH. .cmd / .bat wrappers spawn through ComSpec.

Next

Quickstart

Open a thread and send the first message.