Agent Uplink

DEVELOPMENT DOCUMENTATION / ACP

A remote conversation with a local CLI agent.

Agent Client Protocol connects a host application to an agent. Agent Uplink carries those conversations to an allowlisted agent supervised by the enrolled device.

Connection flow

initialize -> connection ID
open connection event stream
session/new -> session ID
open session event stream
session/prompt -> updates and eventual result
permission request -> host decision -> agent response
DELETE connection -> cleanup

HTTP binding

The device/service endpoint has the form:

/v1/devices/{device_id}/services/{service_id}/http/acp

Provision with examples/m6-catalog-acp.toml through the fresh-catalog workflow: type http-forward, profile acp-http-v1, and grant/token scope http:invoke. Enable that profile in the relay and configure the matching device export. The consumer must use HTTP/2; HTTP/1.1 receives 501 HTTP_UNSUPPORTED_FEATURE. As for MCP, the relay drops User-Agent, Accept-Encoding, Accept-Language and Sec-Fetch-Mode, and refuses any other unlisted header by name.

ExchangeBehavior
POST initialize200 JSON and Acp-Connection-Id.
GET with connection IDConnection-scoped SSE messages.
GET with connection and session IDsSession-scoped SSE messages.
Subsequent POST202 admission response; the JSON-RPC result arrives on the event stream.
DELETE with connection IDTermination request and cleanup.

What has evidence

The pinned official Rust client has driven initialize, sessions, prompt updates, permission callbacks and DELETE against the bridge. Local cluster evidence covers a declared subset of rotation, ownership, revocation and tenant-isolation behavior. The full ACP milestone is not complete.

Important limits

Permissions and workspace

Connection/session ownership includes principal, tenant, device, service and policy revision. Permission callbacks go to the host and do not widen local grants. An agent-visible working directory is scoped to its configured export, not an invitation to disclose arbitrary host paths.

Source & review

Reviewed against cb94dc3ccbf4 on 2026-09-25. Based on docs/acp.md, docs/tasks.md, crates/tunnel-acp-export. Historical test evidence is not a new test run.