Skip to content
Open
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
19 changes: 18 additions & 1 deletion crates/buzz-acp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Buzz Relay ──WS──→ buzz-acp ──stdio──→ Your Agent
(send_message, etc.)
```

Supports any agent that speaks [ACP](https://agentclientprotocol.com/) over stdio: **goose**, **codex** (via [codex-acp](https://github.com/zed-industries/codex-acp)), and **claude code** (via [claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)).
Supports any agent that speaks [ACP](https://agentclientprotocol.com/) over stdio: **goose**, **codex** (via [codex-acp](https://github.com/zed-industries/codex-acp)), **claude code** (via [claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)), and **amp** (via [amp-acp](https://github.com/tao12345666333/amp-acp)).

## Prerequisites

Expand Down Expand Up @@ -91,6 +91,23 @@ buzz-acp
Older installs that still expose `claude-code-acp` are also supported. `buzz-acp`
treats both Claude ACP command names as the same zero-arg runtime.

## Running with Amp

[amp-acp](https://github.com/tao12345666333/amp-acp) wraps Sourcegraph's Amp coding agent in an ACP interface.

```bash
# Install the adapter
npm install -g amp-acp

# Run
export AMP_API_KEY="..." # your Amp API key
export BUZZ_ACP_AGENT_COMMAND="amp-acp"

buzz-acp
```

The desktop app auto-discovers `amp-acp` if it's on PATH.

## Configuration

All configuration is via environment variables (or CLI flags — every env var has a matching flag).
Expand Down
2 changes: 1 addition & 1 deletion crates/buzz-acp/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ fn default_agent_args(command: &str) -> Option<Vec<String>> {
match normalize_agent_command_identity(command).as_str() {
"goose" => Some(vec!["acp".to_string()]),
"codex" | "codex-acp" | "claude-agent-acp" | "claude-code-acp" | "claude-code"
| "claudecode" | "buzz-agent" => Some(Vec::new()),
| "claudecode" | "buzz-agent" | "amp-acp" => Some(Vec::new()),
_ => None,
}
}
Expand Down
4 changes: 2 additions & 2 deletions desktop/scripts/check-file-sizes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ const overrides = new Map([
// refactor followup. discovery.rs is dominated by the new test module
// (the effective_agent_command / divergent / create-time override matrix);
// types.rs adds the persona/instance harness fields. Load-bearing, not
// generic debt.
["src-tauri/src/managed_agents/discovery.rs", 1043],
// generic debt. Amp ACP provider entry (+22 lines) added in follow-up.
["src-tauri/src/managed_agents/discovery.rs", 1065],
["src-tauri/src/managed_agents/types.rs", 1037],
// migration_tests.rs carries the harness-sync migration coverage plus the
// patch_json_records owner-only writeback regression test (SECURITY.md:90
Expand Down
22 changes: 22 additions & 0 deletions desktop/src-tauri/src/managed_agents/discovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ pub(crate) struct KnownAcpRuntime {
const GOOSE_AVATAR_URL: &str = "https://goose-docs.ai/img/logo_dark.png";
const CLAUDE_CODE_AVATAR_URL: &str = "https://anthropic.gallerycdn.vsassets.io/extensions/anthropic/claude-code/2.1.77/1773707456892/Microsoft.VisualStudio.Services.Icons.Default";
const CODEX_AVATAR_URL: &str = "https://openai.gallerycdn.vsassets.io/extensions/openai/chatgpt/26.5313.41514/1773706730621/Microsoft.VisualStudio.Services.Icons.Default";
const AMP_AVATAR_URL: &str = "https://ampcode.com/img/amp-logo.png";
const BUZZ_AGENT_AVATAR_URL: &str =
"https://raw.githubusercontent.com/block/buzz/refs/heads/main/crates/buzz-agent/buzz-agent.png";

Expand Down Expand Up @@ -136,6 +137,27 @@ const KNOWN_ACP_RUNTIMES: &[KnownAcpRuntime] = &[
provider_locked: true,
default_env: &[],
},
KnownAcpRuntime {
id: "amp",
label: "Amp",
commands: &["amp-acp"],

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you also add amp-acp to the desktop-side default_agent_args() match lower in this file? crates/buzz-acp/src/config.rs was updated so the standalone harness treats Amp as zero-arg, but managed desktop agents have a separate normalization path. Keeping both lists in sync avoids preserving a stray acp arg if one is ever passed through for this runtime.

aliases: &[],
avatar_url: AMP_AVATAR_URL,
mcp_command: None,
mcp_hooks: false,
underlying_cli: Some("amp"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Don't require Amp CLI when only amp-acp is needed

The added runtime is treated as cli_missing whenever amp-acp is installed but the amp CLI is not, because classify_runtime requires underlying_cli to resolve before returning available. That blocks the new provider from useAvailableAcpRuntimes, even for users following the new README path of installing amp-acp and authenticating with AMP_API_KEY; the amp-acp docs also describe a standalone/no-CLI setup path (amp-acp --setup or env auth). Set this to None unless Buzz truly requires the Amp CLI, otherwise a working adapter is hidden from the create-agent flow.

Useful? React with 👍 / 👎.

cli_install_commands: &[],
adapter_install_commands: &["npm install -g amp-acp"],

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before we expose this as a one-click known runtime install, can we clarify that amp-acp is a third-party npm adapter (or switch to an official Sourcegraph/Amp adapter if one exists)? The package depends on @ampcode/cli/@ampcode/sdk, but the adapter/repo itself appears to be individually maintained. Since this command installs latest globally, the docs/UI should make that trust boundary explicit, or pin a known-good version.

install_instructions_url: "https://github.com/tao12345666333/amp-acp",
cli_install_hint: "Install Amp via https://ampcode.com.",
adapter_install_hint: "Install the Amp ACP adapter via npm.",
skill_dir: None,
supports_acp_model_switching: false,
model_env_var: None,
provider_env_var: None,
provider_locked: true,
default_env: &[],
},
KnownAcpRuntime {
id: "buzz-agent",
label: "Buzz Agent",
Expand Down
Loading