ACP and Goose: local and remote agent clients explained

Learn how ACP connects clients to Goose through local standard IO and a proposed HTTP transport, with demos in Zed and a Poolside AI terminal client.

Player not loading? Watch on YouTube

Alex Hancock, a software engineer at Block and contributor to Goose, explains the Agent Client Protocol (ACP) as a common interface between client applications and agent harnesses. He contrasts its purpose with MCP: MCP connects agents to tools and resources, while ACP lets clients submit work and receive updates.

Hancock traces ACP to collaboration between Zed and JetBrains. He describes JSON RPC messages for sessions, user input, tool call notifications and permission requests. Custom methods use an underscore prefix; he argues that patterns shared across implementations could later become part of the standard.

The demos use Zed and a terminal client from Poolside AI to query the same Goose agent about a single HTML file over local standard IO. A separate client sends Goose a request over a network connection, with both processes still on Hancock's machine. These examples demonstrate client interoperability rather than model performance.

Hancock says his team specified HTTP transport with a websocket upgrade because ACP lacked remote support. He describes that transport as landing at the time of the talk. For self-hosted deployments, his proposed architecture would let the client, harness, tools and model occupy different machines. The talk does not establish offline operation or give model hardware requirements.