@intentic/acp-bridge
v1.326.0
Published
ACP agent bridge for intentic, drive the agents in your intentic sandbox (Claude, Codex, Grok, any ACP agent) from Zed, JetBrains, or any ACP editor
Readme
acp-bridge
A stdio bridge that lets Zed, JetBrains or any Agent Client Protocol editor drive the agents in an intentic sandbox.
flowchart LR
editor["Editor<br/>Zed · JetBrains"] -->|"ACP on stdio"| bridge(["intentic-acp"])
bridge -->|"POST /agent<br/>/agent/attach"| daemon["Sandbox daemon"]
daemon --> agents["Claude · Codex · Grok<br/>ACP agents"]
bridge --> home["~/.intentic/acp<br/>config · sessions"]- Runs on the user's machine: the editor launches
npx @intentic/acp-bridge(binintentic-acp) and talks ACP over stdin and stdout, so nothing else may write to stdout. - One ACP session is one daemon conversation.
POST /agentstarts a turn,/agent/attachstreams it back, andtranslate.tsturns each frame into asession/update, rewriting/workpaths onto the editor's cwd. Open the synced folder as the project so those paths line up. - A plan card and each
AskUserQuestionbecome ACP permission requests. Thecodeandplanmodes map to the daemon's per-turn permission mode. - Credentials come from
INTENTIC_SANDBOX_URLandINTENTIC_CONTROL_TOKEN, or fromintentic-acp login. The token is an editor-scoped control token minted in the sandbox app; a 401 reaches the editor as ACPauth_required. - agent-registry/agent.json is the listing for ACP agent registries.
Key files
- src/cli.ts — entry point:
login, or serve ACP on stdio. - src/bridge.ts —
bridgeAgentApp: sessions, modes, and plans and questions as permission requests. - src/translate.ts — attach frames to
session/update, sandbox paths to editor paths. - src/daemon-client.ts — the daemon routes the bridge calls, with the control-token header.
- src/config.ts — environment-then-file config and the ACP session to conversation map.
- src/bridge.integration.test.ts — the whole bridge against a fake daemon.
Commands
pnpm --filter @intentic/acp-bridge test