Repository navigation
Conversation
|
Important CHANGES REQUESTED What This PR DoesCommand Code ships a native ACP server ( How It Works
Findings
Finding Details🟡 F1: Missing
|
| Reviewer | Angle | Verdict | Key points |
|---|---|---|---|
| Reviewer A | Architecture / general | LGTM | Consistent pattern, strong smoke and live coverage, least-privilege auth docs |
| Reviewer B | Correctness | Changes on F2, F3 | Late working_dir failure, Helm divergence, smoke/test edge cases |
| Reviewer C | Security / CI | Approve after F1 | Re-ran the smoke script against the real CLI, verified no install scripts and safe nightly bump, found the missing bake target |
| Coordinator | Aggregation | Changes requested | Verified F1-F4 in source and npm metadata; dismissed the allowlist concern (#[cfg(test)]) |
No external reviewer comments were present at review time. The Review Contract check passed.
CI / Status
All completed checks pass at this SHA, including smoke-test (Dockerfile.commandcode, -commandcode, command-code, acp) and smoke-test-unified (commandcode, command-code). Full cargo test --workspace and full release builds run upstream, as the PR description states.
Baseline Check
- PR opened: 2026-11-02
- Head:
5716c9335c032c8682065754db5401df70551951 - Base:
main(not stacked), merge-base9d0317bd0803947e75bc41edcb9adf9921f7ec20 - Diff: 22 files, +625 / -23
- Main already has: generic ACP transport, session pool,
session/load,inherit_env, and the per-variant image/CI pattern. Runningcommand-code acpwas already possible with a hand-written config and a custom image. - Net-new value: first-class setup option, pinned images in three layouts, CI compatibility gate, nightly version tracking, and documentation.
5. Three Reasons We Might Not Need This PR
- Variant sprawl - each backend adds three Dockerfile targets, about seven workflow entries, nightly polling, and version-bump chores. A generic "bring your own ACP command" guide would deliver most of the value with no new matrix entries.
- Already possible today - since no core code changes, users can already run
command-code acpwith a custom image and config; the PR mainly adds packaging and convenience. - Vendor-controlled contract - a closed-source, obfuscated CLI whose ACP behavior, error wording, and auth flow can change on any nightly bump, with OpenAB carrying the breakage in its published images.
None of these are implementation blockers. They are product trade-offs for maintainers to weigh against demand for Command Code.
|
Setting this PR to draft. We won't proceed this PR until we have 10 👍 |
|
Caution This PR has been waiting on the author for more than 2 days (labeled @fshiori — You must add a new comment on this PR to remove the |
|
🔒 Auto-closing: this PR has had the If you'd like to continue working on this, please submit a new PR and link to this one if necessary. |
What problem does this solve?
Command Code is missing from OpenAB’s setup wizard, container variants, and backend documentation. This PR adds it as an opt-in backend using its native ACP server and OpenAB’s existing connection/session handling.
Related issue: Not linked.
Discord Discussion URL: https://discord.com/channels/1491295327620169908/1491365158868619404/1566712467349045288
Review Contract
Goal
Add Command Code support through setup, container images, build workflows, documentation, and integration tests.
Non-goals
Redesigning ACP transport, changing existing backend defaults, adding interactive question/plan approval UI, or fixing shared native Windows npm launcher handling.
Accepted Residual Risks
Proposed for maintainer approval:
Acceptance Criteria
Follow-ups
Shared native Windows npm launcher handling and dedicated chat UI for agent questions/plan approvals can be handled separately.
At a Glance
Discord / Slack / gateway adapters
|
v
OpenAB dispatcher + session pool
|
ACP over stdio
|
v
command-code acp
Prior Art & Industry Research
OpenClaw:
OpenClaw runs external coding harnesses through an ACP backend plugin, such as acpx. This provides a comparable approach to integrating an existing agent runtime through ACP. ACP agents documentation (https://docs.openclaw.ai/tools/acp-agents)
Hermes Agent:
Hermes exposes hermes acp as a stdio ACP server, including streamed messages, tool activity, and approval prompts. It reserves stdout for protocol traffic and sends logs to stderr. ACP Host Integration (https://hermes-agent.nousresearch.com/docs/user-guide/features/acp)
Other references:
Command Code’s native ACP documentation (https://commandcode.ai/docs/acp) describes the standard initialize → session/new → session/prompt flow used by this integration.
Proposed Solution
Why this approach?
Command Code already implements ACP, and OpenAB already handles the required transport, permissions, streaming, and session lifecycle. Reusing that implementation keeps the integration consistent with other native ACP backends.
Alternatives Considered
Validation
Formatting note: with Rust 1.99.1, the baseline (9d0317b) and this branch report the same 37 unchanged files under cargo fmt --all -- --check. No formatting failures were introduced by this PR.