> ## Documentation Index
> Fetch the complete documentation index at: https://getpullrequest.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ACP-compatible agents

> How GPR discovers and launches agents that speak Agent Client Protocol.

GPR’s daemon is an ACP host. Any catalog agent that speaks ACP over stdio can run tasks and chats.

## Built-in catalog

| Id         | Command                   | Notes                           |
| ---------- | ------------------------- | ------------------------------- |
| `cursor`   | `cursor-agent acp`        | No adapter                      |
| `claude`   | `claude-code-acp`         | Needs `claude` + adapter binary |
| `codex`    | `codex-acp`               | Needs `codex` + adapter binary  |
| `kiro`     | `kiro-cli acp`            | No adapter                      |
| `opencode` | `opencode acp`            | No adapter                      |
| `qwen`     | `qwen --experimental-acp` | No adapter                      |
| `cline`    | `cline acp`               | No adapter                      |
| `copilot`  | `copilot acp`             | No adapter                      |

## Discovery

```bash theme={null}
gpr discover
```

`Ready` means:

1. Every binary in `Requires` is on `PATH`.
2. If an adapter is required, that binary exists beside `gpr`.

## Selecting an agent

Set the agent on the **workspace** in the app. Tasks use that workspace’s agent when claimed.

## Protocol path

```text theme={null}
Phone ↔ backend relay ↔ gpr daemon ↔ ACP stdio ↔ agent process
```

The backend does not embed the agent. It relays frames and stores task/session metadata.

## Adding new agents later

New catalog entries ship with daemon releases. Prefer agents that already appear in `gpr discover`.

When you need a custom ACP binary, extra env (API keys, proxy URLs), or an agent id that is not in the catalog, write [agents.json](/docs/reference/agents-json). Names in that file are advertised to the app on connect. A catalog id you redefine fully replaces the built-in launch spec.
