Skip to content

Conversation

@3coins
Copy link

@3coins 3coins commented Feb 10, 2026

Summary

Adds an HTTP/WebSocket transport layer (acp.http) that enables ACP agents and clients to communicate over WebSocket instead of stdio, unlocking remote agent deployments (e.g., cloud-hosted agents accessed by any ACP client over standard WebSocket connections).

Related issues

N/A — new feature. Validated via acp-agentcore-poc, a proof-of-concept integrating DeepAgents with AWS Bedrock AgentCore using this transport. Also validated via jai-remote-acp-persona, that integrates this with Jupyter as the client.

Testing

  • uv run python -m pytest tests/test_http_transport.py -v — 13 tests, all passing:
    • WebSocketStreamAdapter lifecycle (start, close, double-start, idempotent close)
    • Bidirectional message flow (receive → reader, writer → send, bytes and text)
    • EOF handling on WebSocket disconnect
    • StarletteWebSocketWrapper delegation (recv, send text/bytes, close)
    • End-to-end agent ↔ client round-trip over WebSocket adapters (initialize, new_session, prompt)
  • Existing test suite unaffected (uv run python -m pytest passes)

Docs & screenshots

Demo of AgentCore agent with a test client

agentcore-acp-demo.mp4

Demo of AgentCore agent with Jupyter client

jai-remote-acp-demo.mp4

Documentation updates included in this PR:

  • README.md — Updated "At a glance" and "Project layout" to mention HTTP/WebSocket transport
  • docs/quickstart.md — New "HTTP/WebSocket (remote agents)" section with server setup, client connection, and programmatic usage examples
  • docs/http-transport.md — Dedicated doc page covering architecture (4-queue design), component APIs (WebSocketStreamAdapter, connect_http_agent, WebSocketLike, StarletteWebSocketWrapper), server/client examples, dependencies, and limitations
  • mkdocs.yml — Added nav entry for the new doc page
  • Two runnable examples: examples/http_echo_agent.py (server) and examples/http_client.py (client)

Checklist

  • Conventional Commit title (e.g. feat:, fix:).
  • Tests cover the change or are not required (explain above).
  • Docs/examples updated when behaviour is user-facing.
  • Schema regenerations (make gen-all) are called out if applicable. — N/A, no schema changes.

3coins and others added 2 commits February 10, 2026 17:10
- Update README.md to mention HTTP/WebSocket transport and examples
- Add HTTP/WebSocket section to docs/quickstart.md with usage examples
- Add dedicated docs/http-transport.md with architecture, API reference,
  and server/client examples
- Add http-transport.md to mkdocs.yml navigation
- Add tests/test_http_transport.py with 13 tests covering:
  - WebSocketStreamAdapter lifecycle (start, close, double-start)
  - Bidirectional message flow (receive → reader, writer → send)
  - EOF handling on WebSocket disconnect
  - StarletteWebSocketWrapper delegation
  - End-to-end agent ↔ client communication over WebSocket adapters
@3coins 3coins marked this pull request as ready for review February 10, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant