ACP Protocol
The Agent Client Protocol (ACP) adapter exposes an Awaken runtime over stdio
using the official agent-client-protocol Rust SDK. Unlike the HTTP protocols,
ACP is a process/stdio integration: a host launches the Awaken-backed process,
then exchanges ACP JSON-RPC messages over stdin/stdout.
Feature gate: server
Runtime entry points
Section titled “Runtime entry points”| API | Purpose |
|---|---|
awaken_server::protocols::acp::stdio::serve_stdio(runtime) | Serve ACP on process stdin/stdout. |
awaken_server::protocols::acp::stdio::serve_stdio_io(runtime, input, output) | Serve ACP over caller-provided async I/O; used by tests and embedders. |
awaken_server::protocols::acp::encoder::AcpEncoder | Transcode AgentEvent values into ACP session updates. |
Session behavior
Section titled “Session behavior”initializereturns the requested protocol version,awaken-acpagent info, and prompt capabilities for text plus image/audio/embedded-context blocks.newSessionrequires an absolutecwd.mcpServersin the request are rejected; register MCP servers through Awaken config instead.- The adapter selects the
defaultagent when present. If nodefaultagent exists, the runtime must have exactly one registered agent. - Each ACP session maps to a fresh Awaken thread id.
promptappends the user content to that thread and runs the selected agent throughAgentRuntime. - Tool permission requests are bridged to the ACP client and converted back into Awaken HITL resume decisions.
Relationship to HTTP adapters
Section titled “Relationship to HTTP adapters”ACP is backed by the same AgentRuntime and AgentEvent stream as the other
protocol adapters. Each adapter projects or collects those events according to
its own wire semantics; ACP does not add a separate agent execution path.