Skip to content

feat: add claude ACP sandbox target#2189

Draft
the-mentor wants to merge 5 commits into
kagent-dev:mainfrom
the-mentor:feat/claude-acp-sandbox-target
Draft

feat: add claude ACP sandbox target#2189
the-mentor wants to merge 5 commits into
kagent-dev:mainfrom
the-mentor:feat/claude-acp-sandbox-target

Conversation

@the-mentor

@the-mentor the-mentor commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a claude target to docker/acp-sandbox/Dockerfile using @agentclientprotocol/claude-agent-acp@0.58.1 (wraps @anthropic-ai/claude-agent-sdk) on top of the node-base stage (Node ≥22 required)
  • Unlike the openclaw target, no sandbox-local gateway is needed — claude-agent-acp speaks ACP over stdio directly, so the shim runs it as its child: CMD ["--", "claude-agent-acp"]
  • Wires build-acp-sandbox-claude into the Makefile and adds acp-sandbox-claude to the build matrix in both ci.yaml and tag.yaml
  • Documents the full image family (including Claude) in docker/acp-sandbox/README.md

ACP handshake status

Verified locally at v0.58.1: initialize returns protocolVersion: 1, agentInfo.version: "0.58.1", authMethods: []. Authentication is via ANTHROPIC_API_KEY injected at runtime — no separate authenticate step.

Still to verify: full session/prompt round-trip reaches the model, and the in-memory session model holds across bridge reconnects.

Test plan

  • CI builds and pushes acp-sandbox-claude image successfully
  • Smoke test: docker run --rm -p 9000:9000 -e ANTHROPIC_API_KEY=<key> kagent/acp-sandbox-claude + websocat -1 ws://localhost:9000/acpinitialize succeeds
  • make build-acp-sandbox-claude works locally
  • make build-acp-sandbox now includes the claude target

🤖 Generated with Claude Code

the-mentor and others added 4 commits July 9, 2026 16:29
Signed-off-by: Avri Chen-Roth <avri210984@gmail.com>
Signed-off-by: Avri Chen-Roth <avri210984@gmail.com>
The initialize handshake round-trips against the built image
(protocolVersion 1, authMethods empty → env-key auth, no separate
authenticate step). Narrows the open item to the full prompt
round-trip and reconnect behavior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Avri Chen-Roth <avri210984@gmail.com>
Add the claude target to the CI build matrix (ci.yaml) and the release
push matrix (tag.yaml), plus the supporting Makefile pieces:
build-acp-sandbox-claude target, image-name/IMG vars, print-images
echo, and the build-acp-sandbox aggregate dependency.

Scope is the standalone image only — not wired into build-controller
or the digest-embedding (that is harness-backend integration, tracked
separately).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Avri Chen-Roth <avri210984@gmail.com>
@the-mentor the-mentor force-pushed the feat/claude-acp-sandbox-target branch from 008cfa3 to aa67df4 Compare July 9, 2026 13:29
@github-actions github-actions Bot added the enhancement New feature or request label Jul 9, 2026
- Add missing "from another shell" instruction to the claude smoke-test
  block (consistent with the hermes example above it)
- Add note that a successful initialize handshake does not confirm
  end-to-end prompt processing
- Clarify table entry: claude-agent-acp speaks to the shim over stdio;
  the shim still exposes ws://0.0.0.0:9000/acp externally

Signed-off-by: Avri Chen-Roth <avri210984@gmail.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jul 9, 2026
@Prefix

Prefix commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

+1 would love to see this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants