Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Repo: https://github.com/openclaw/acpx
- Agents/built-ins: bump the default Claude ACP adapter range to `@agentclientprotocol/claude-agent-acp@^0.37.0`. Thanks @trumpyla.
- Runtime/embedding: surface cost, token usage breakdowns, and advertised command metadata on runtime status/events. Thanks @DaniAkash.
- Agents/built-ins: add `fast-agent` as a built-in fast-agent ACP adapter via `uvx fast-agent-mcp acp`.
- Agents/built-ins: add `mux` as a built-in coder/mux ACP adapter via `npx -y mux acp`.

### Breaking

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ Built-ins:
| `kilocode` | `npx -y @kilocode/cli acp` | [Kilocode](https://kilocode.ai) |
| `kimi` | native (`kimi acp`) | [Kimi CLI](https://github.com/MoonshotAI/kimi-cli) |
| `kiro` | native (`kiro-cli-chat acp`) | [Kiro CLI](https://kiro.dev) |
| `mux` | `npx -y mux acp` | [Mux](https://mux.coder.com) |
| `opencode` | `npx -y opencode-ai acp` | [OpenCode](https://opencode.ai) |
| `qoder` | native (`qodercli --acp`) | [Qoder CLI](https://docs.qoder.com/cli/acp) |
| `qwen` | native (`qwen --acp`) | [Qwen Code](https://github.com/QwenLM/qwen-code) |
Expand Down
9 changes: 9 additions & 0 deletions agents/Mux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Mux

- Built-in name: `mux`
- Default command: `npx -y mux acp`
- Upstream: https://mux.coder.com/integrations/acp

`acpx mux` starts coder/mux through its ACP stdio bridge (`mux acp`). `mux acp` auto-starts an in-process mux server, so a separate `mux server` is not required.

Configure at least one model provider before prompting (for example `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `OPENROUTER_API_KEY`); see https://mux.coder.com/config/providers. To target a remote mux server, override the command with `mux acp --server-url <url> --auth-token <token>` (or set `MUX_SERVER_URL` / `MUX_SERVER_AUTH_TOKEN`).
2 changes: 2 additions & 0 deletions agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Built-in agents:
- `kilocode -> npx -y @kilocode/cli acp`
- `kimi -> kimi acp`
- `kiro -> kiro-cli-chat acp`
- `mux -> npx -y mux acp`
- `opencode -> npx -y opencode-ai acp`
- `qoder -> qodercli --acp`
- `qwen -> qwen --acp`
Expand All @@ -33,6 +34,7 @@ Harness-specific docs in this directory:
- [Kilocode](Kilocode.md): built-in `kilocode -> npx -y @kilocode/cli acp`
- [Kimi](Kimi.md): built-in `kimi -> kimi acp`
- [Kiro](Kiro.md): built-in `kiro -> kiro-cli-chat acp`
- [Mux](Mux.md): built-in `mux -> npx -y mux acp`
- [OpenCode](OpenCode.md): built-in `opencode -> npx -y opencode-ai acp`
- [Qoder](Qoder.md): built-in `qoder -> qodercli --acp`
- [Qwen](Qwen.md): built-in `qwen -> qwen --acp`
Expand Down
11 changes: 11 additions & 0 deletions docs/agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ The default agent for top-level commands like `acpx exec …` and `acpx prompt
| `kilocode` | `npx -y @kilocode/cli acp` | [Kilocode](https://kilocode.ai) |
| `kimi` | `kimi acp` | [Kimi CLI](https://github.com/MoonshotAI/kimi-cli) |
| `kiro` | `kiro-cli-chat acp` | [Kiro CLI](https://kiro.dev) |
| `mux` | `npx -y mux acp` | [Mux](https://mux.coder.com) |
| `opencode` | `npx -y opencode-ai acp` | [OpenCode](https://opencode.ai) |
| `qoder` | `qodercli --acp` | [Qoder CLI](https://docs.qoder.com/cli/acp) |
| `qwen` | `qwen --acp` | [Qwen Code](https://github.com/QwenLM/qwen-code) |
Expand Down Expand Up @@ -166,6 +167,16 @@ Configure model/provider settings through fast-agent environment variables, fast
- Default command: `kiro-cli-chat acp`
- Upstream: [kiro.dev](https://kiro.dev)

### Mux

- Built-in name: `mux`
- Default command: `npx -y mux acp`
- Upstream: https://mux.coder.com/integrations/acp

`acpx mux` starts coder/mux through its ACP stdio bridge (`mux acp`). `mux acp` auto-starts an in-process mux server, so a separate `mux server` is not required.

Configure at least one model provider before prompting (for example `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `OPENROUTER_API_KEY`); see https://mux.coder.com/config/providers. To target a remote mux server, override the command with `mux acp --server-url <url> --auth-token <token>` (or set `MUX_SERVER_URL` / `MUX_SERVER_AUTH_TOKEN`).

### OpenCode

- Built-in name: `opencode`
Expand Down
2 changes: 1 addition & 1 deletion docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Some older Corepack builds bundled with supported Node.js versions have stale
package-signing keys and fail while preparing current pnpm releases. Installing
pnpm with npm avoids that bootstrap failure.

`acpx` itself does not need a global install of every adapter. Built-in adapters that ship as npm packages (`pi-acp`, `@agentclientprotocol/codex-acp`, `@agentclientprotocol/claude-agent-acp`, `@kilocode/cli`, `opencode-ai`) are auto-fetched with `npx` on first use. The `fast-agent` built-in uses `uvx fast-agent-mcp acp`, so it requires `uvx` on `PATH`.
`acpx` itself does not need a global install of every adapter. Built-in adapters that ship as npm packages (`pi-acp`, `@agentclientprotocol/codex-acp`, `@agentclientprotocol/claude-agent-acp`, `@kilocode/cli`, `opencode-ai`, `mux`) are auto-fetched with `npx` on first use. The `fast-agent` built-in uses `uvx fast-agent-mcp acp`, so it requires `uvx` on `PATH`.

## Global install (recommended)

Expand Down
1 change: 1 addition & 0 deletions skills/acpx/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ Friendly agent names resolve to commands:
- `kilocode` -> `npx -y @kilocode/cli acp`
- `kimi` -> `kimi acp`
- `kiro` -> `kiro-cli-chat acp`
- `mux` -> `npx -y mux acp`
- `opencode` -> `npx -y opencode-ai acp`
- `qoder` -> `qodercli --acp`
Forwards Qoder-native `--allowed-tools` and `--max-turns` startup flags from `acpx` session options.
Expand Down
2 changes: 2 additions & 0 deletions src/agent-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const ACP_ADAPTER_PACKAGE_RANGES = {
pi: "^0.0.26",
codex: "^0.0.44",
claude: "^0.37.0",
mux: "^0.26.0",
} as const;

type BuiltInAgentPackageSpec = {
Expand Down Expand Up @@ -49,6 +50,7 @@ export const AGENT_REGISTRY: Record<string, string> = {
kilocode: "npx -y @kilocode/cli acp",
kimi: "kimi acp",
kiro: "kiro-cli-chat acp",
mux: `npx -y mux@${ACP_ADAPTER_PACKAGE_RANGES.mux} acp`,
opencode: "npx -y opencode-ai acp",
qoder: "qodercli --acp",
qwen: "qwen --acp",
Expand Down
6 changes: 6 additions & 0 deletions test/agent-registry.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ test("fast-agent built-in runs the ACP entrypoint through uvx", () => {
assert.equal(resolveAgentCommand("fast-agent"), "uvx fast-agent-mcp acp");
});

test("mux built-in runs the coder/mux ACP stdio bridge through npx", () => {
assert.equal(AGENT_REGISTRY.mux, "npx -y mux@^0.26.0 acp");
assert.equal(resolveAgentCommand("mux"), "npx -y mux@^0.26.0 acp");
});

test("listBuiltInAgents preserves the required example prefix and alphabetical tail", () => {
const agents = listBuiltInAgents();
assert.deepEqual(agents, Object.keys(AGENT_REGISTRY));
Expand All @@ -73,6 +78,7 @@ test("listBuiltInAgents preserves the required example prefix and alphabetical t
"kilocode",
"kimi",
"kiro",
"mux",
"opencode",
"qoder",
"qwen",
Expand Down