The Agent Client Protocol (ACP) defines how a client application — a desktop app, editor, or IDE — communicates with an agent runtime that runs as its own local process, typically over a WebSocket or stdio connection. The client owns projects, sessions, context, and configuration; the agent runtime owns the actual reasoning loop, tool calls, and model requests, and reports state back over the protocol. This separation lets one client swap between different agent backends without a rewrite. Block's Berd desktop app is a public example: it speaks ACP to Goose, Block's open-source agent framework, which runs bundled as a sidecar process alongside Berd.