Summary
Per ADR-001 (filed in Obsidian, to be committed to repo), agentctl should adopt ACP as its primary agent interface strategy.
Background
ACPx provides a mature headless ACP client runtime with persistent sessions, cooperative cancel, fs/terminal callbacks, and a growing registry of ACP bridges for Claude Code, Codex, OpenCode, Pi, and more.
Today agentctl maintains 5+ bespoke adapters (~500-800 LOC each) that independently handle launch, resume, PTY management, output parsing, and lifecycle detection. This is the same problem ACP solves at the protocol level.
Proposed Changes
Phase 1: ACP-first for one adapter (proof of concept)
Phase 2: Migrate remaining adapters
Phase 3: Thin adapter model
Phase 4: Upstream contributions
What stays unchanged
- Daemon supervision architecture
- Fleet discovery (
agentctl list)
- Worktree management and sweeps
- Directory locks and fuses
- Prometheus metrics
- Webhook/callback hooks
- OrgLoop integration
- CLI UX
ADR
Full ADR with rationale, consequences, and risk analysis: ADR-001 in Obsidian
Related
Summary
Per ADR-001 (filed in Obsidian, to be committed to repo), agentctl should adopt ACP as its primary agent interface strategy.
Background
ACPx provides a mature headless ACP client runtime with persistent sessions, cooperative cancel, fs/terminal callbacks, and a growing registry of ACP bridges for Claude Code, Codex, OpenCode, Pi, and more.
Today agentctl maintains 5+ bespoke adapters (~500-800 LOC each) that independently handle launch, resume, PTY management, output parsing, and lifecycle detection. This is the same problem ACP solves at the protocol level.
Proposed Changes
Phase 1: ACP-first for one adapter (proof of concept)
Phase 2: Migrate remaining adapters
@zed-industries/claude-agent-acp)opencode-ai acp)Phase 3: Thin adapter model
Phase 4: Upstream contributions
What stays unchanged
agentctl list)ADR
Full ADR with rationale, consequences, and risk analysis: ADR-001 in Obsidian
Related