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 <amp@ampcode.com>
This commit is contained in:
Andrew Kuttig
2026-04-02 08:08:50 -06:00
parent 3d130a1460
commit 2f53eaebcc
3 changed files with 27 additions and 4 deletions

View File

@@ -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).

View File

@@ -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<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" => Some(Vec::new()),
| "claudecode" | "amp-acp" => Some(Vec::new()),
_ => None,
}
}

View File

@@ -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<Vec<String>> {
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,
}
}