Skip to content

Remote ACP Hosting

This page documents the remote-host pattern for combining ACP Kit adapters with ACP Remote transport.

There is intentionally no maintained examples/acpremote/ source directory. The remote-host flow is described here as an operator pattern and mock wiring sketch so the public docs can stay stable without shipping another example package surface.

What It Demonstrates

  • adapting a Pydantic AI runtime into ACP and exposing it over WebSocket
  • adapting a LangChain graph into ACP and exposing it over WebSocket
  • mirroring either remote endpoint back into a local stdio ACP server
  • keeping remote host ownership for cwd, filesystem, and terminal capabilities

Pydantic Remote Flow

Remote host:

acpkit serve examples.pydantic.finance_agent:agent --host 0.0.0.0 --port 8080

Local mirror:

acpkit run --addr ws://127.0.0.1:8080/acp/ws

This path uses the maintained finance example from examples/pydantic/finance_agent.py.

LangChain Remote Flow

Remote host:

acpkit serve examples.langchain.workspace_graph:graph --host 0.0.0.0 --port 8081

Local mirror:

acpkit run --addr ws://127.0.0.1:8081/acp/ws

This path uses the maintained plain-LangChain example from examples/langchain/workspace_graph.py.

CLI Alternative

ACP Kit already exposes the remote-host boundary through the root CLI:

acpkit serve examples.pydantic.finance_agent:agent --host 0.0.0.0 --port 8080
acpkit serve examples.langchain.workspace_graph:graph --host 0.0.0.0 --port 8081
acpkit run --addr ws://127.0.0.1:8080/acp/ws

Mock Python Sketch

If you want the same shape in Python instead of the CLI, the transport boundary looks like this:

from acpkit import create_acp_agent
from acpremote import connect_acp, serve_acp


async def remote_host() -> None:
    acp_agent = create_acp_agent(...)
    server = await serve_acp(agent=acp_agent, host='0.0.0.0', port=8080)
    await server.serve_forever()


async def local_mirror() -> None:
    agent = connect_acp('ws://127.0.0.1:8080/acp/ws')
    ...

Treat that as a documented sketch rather than a maintained example module.