From 2f53eaebcc782177b1aff0c1581a1ae9e1c9a223 Mon Sep 17 00:00:00 2001 From: Andrew Kuttig Date: Thu, 2 Apr 2026 08:08:50 -0600 Subject: [PATCH] Add Amp as a known ACP provider Register amp-acp (https://github.com/tao12345666333/amp-acp) as a known ACP provider alongside Goose, Claude Code, and Codex. - Add Amp to KNOWN_ACP_PROVIDERS in the desktop discovery module - Add amp-acp to default_agent_args in both sprout-acp and desktop - Add 'Running with Amp' section to the sprout-acp README Amp-Thread-ID: https://ampcode.com/threads/T-019d4e6c-6235-76b4-aaf3-63baf10304d0 Co-authored-by: Amp --- crates/sprout-acp/README.md | 17 ++++++++++++++++- crates/sprout-acp/src/config.rs | 4 ++-- .../src-tauri/src/managed_agents/discovery.rs | 10 +++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/crates/sprout-acp/README.md b/crates/sprout-acp/README.md index a869bbe33f..842df50d92 100644 --- a/crates/sprout-acp/README.md +++ b/crates/sprout-acp/README.md @@ -9,7 +9,7 @@ Sprout Relay ──WS──→ sprout-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 @@ -92,6 +92,21 @@ sprout-acp Older installs that still expose `claude-code-acp` are also supported. `sprout-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 SPROUT_ACP_AGENT_COMMAND="amp-acp" + +sprout-acp +``` + ## Configuration All configuration is via environment variables (or CLI flags — every env var has a matching flag). diff --git a/crates/sprout-acp/src/config.rs b/crates/sprout-acp/src/config.rs index 613edca9fb..df822d4239 100644 --- a/crates/sprout-acp/src/config.rs +++ b/crates/sprout-acp/src/config.rs @@ -151,7 +151,7 @@ impl std::fmt::Display for PermissionMode { about = "Query available models from the configured agent" )] pub struct ModelsArgs { - /// Agent binary to spawn (e.g. "goose", "claude-agent-acp", "codex-acp"). + /// Agent binary to spawn (e.g. "goose", "claude-agent-acp", "codex-acp", "amp-acp"). #[arg(long, env = "SPROUT_ACP_AGENT_COMMAND", default_value = "goose")] pub agent_command: String, @@ -439,7 +439,7 @@ fn default_agent_args(command: &str) -> Option> { 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" => Some(Vec::new()), + | "claudecode" | "amp-acp" => Some(Vec::new()), _ => None, } } diff --git a/desktop/src-tauri/src/managed_agents/discovery.rs b/desktop/src-tauri/src/managed_agents/discovery.rs index 5d5b900d0f..efe02f2b03 100644 --- a/desktop/src-tauri/src/managed_agents/discovery.rs +++ b/desktop/src-tauri/src/managed_agents/discovery.rs @@ -25,6 +25,7 @@ struct KnownAcpProvider { const GOOSE_AVATAR_URL: &str = "https://block.github.io/goose/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 COMMON_BINARY_PATHS: &[&str] = &[ "/opt/homebrew/bin", @@ -55,6 +56,13 @@ const KNOWN_ACP_PROVIDERS: &[KnownAcpProvider] = &[ aliases: &[], avatar_url: CODEX_AVATAR_URL, }, + KnownAcpProvider { + id: "amp", + label: "Amp", + commands: &["amp-acp"], + aliases: &[], + avatar_url: AMP_AVATAR_URL, + }, ]; fn workspace_root_dir() -> PathBuf { @@ -121,7 +129,7 @@ fn default_agent_args(command: &str) -> Option> { match normalize_command_identity(command).as_str() { "goose" => Some(vec!["acp".to_string()]), "codex" | "codex-acp" | "claude-agent-acp" | "claude-code-acp" | "claude-code" - | "claudecode" => Some(Vec::new()), + | "claudecode" | "amp-acp" => Some(Vec::new()), _ => None, } }