| --- |
| title: ACP Support |
| description: Use OpenCode in any ACP-compatible editor. |
| --- |
| |
| OpenCode supports the [Agent Client Protocol](https://agentclientprotocol.com) or (ACP), allowing you to use it directly in compatible editors and IDEs. |
|
|
| :::tip |
| For a list of editors and tools that support ACP, check out the [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now). |
| ::: |
|
|
| ACP is an open protocol that standardizes communication between code editors and AI coding agents. |
|
|
| --- |
| |
| |
|
|
| To use OpenCode via ACP, configure your editor to run the `opencode acp` command. |
|
|
| The command starts OpenCode as an ACP-compatible subprocess that communicates with your editor over JSON-RPC via stdio. |
|
|
| Below are examples for popular editors that support ACP. |
|
|
| --- |
| |
| |
|
|
| Install OpenCode from the [Zed ACP Registry](https://zed.dev/docs/ai/external-agents#registry) by running `zed: acp registry` in the Command Palette. |
|
|
| To use a custom OpenCode executable instead, add it to your [Zed](https://zed.dev) configuration (`~/.config/zed/settings.json`): |
|
|
| ```json title="~/.config/zed/settings.json" |
| { |
| "agent_servers": { |
| "OpenCode": { |
| "type": "custom", |
| "command": "opencode", |
| "args": ["acp"] |
| } |
| } |
| } |
| ``` |
|
|
| To open it, use the `agent: new thread` action in the **Command Palette**. |
|
|
| You can also bind a keyboard shortcut by editing your `keymap.json`: |
|
|
| ```json title="keymap.json" |
| [ |
| { |
| "bindings": { |
| "cmd-alt-o": [ |
| "agent::NewExternalAgentThread", |
| { |
| "agent": { |
| "custom": { |
| "name": "OpenCode", |
| "command": { |
| "command": "opencode", |
| "args": ["acp"] |
| } |
| } |
| } |
| } |
| ] |
| } |
| } |
| ] |
| ``` |
|
|
| --- |
| |
| |
|
|
| Add to your [JetBrains IDE](https://www.jetbrains.com/) acp.json according to the [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html): |
|
|
| ```json title="acp.json" |
| { |
| "agent_servers": { |
| "OpenCode": { |
| "command": "/absolute/path/bin/opencode", |
| "args": ["acp"] |
| } |
| } |
| } |
| ``` |
|
|
| To open it, use the new 'OpenCode' agent in the AI Chat agent selector. |
|
|
| --- |
| |
| |
|
|
| Add to your [Avante.nvim](https://github.com/yetone/avante.nvim) configuration: |
|
|
| ```lua |
| { |
| acp_providers = { |
| ["opencode"] = { |
| command = "opencode", |
| args = { "acp" } |
| } |
| } |
| } |
| ``` |
|
|
| If you need to pass environment variables: |
|
|
| ```lua {6-8} |
| { |
| acp_providers = { |
| ["opencode"] = { |
| command = "opencode", |
| args = { "acp" }, |
| env = { |
| OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY") |
| } |
| } |
| } |
| } |
| ``` |
|
|
| --- |
| |
| |
|
|
| To use OpenCode as an ACP agent in [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), add the following to your Neovim config: |
|
|
| ```lua |
| require("codecompanion").setup({ |
| interactions = { |
| chat = { |
| adapter = { |
| name = "opencode", |
| model = "claude-sonnet-4", |
| }, |
| }, |
| }, |
| }) |
| ``` |
|
|
| This config sets up CodeCompanion to use OpenCode as the ACP agent for chat. |
|
|
| If you need to pass environment variables (like `OPENCODE_API_KEY`), refer to [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) in the CodeCompanion.nvim documentation for full details. |
|
|
| |
|
|
| OpenCode works the same via ACP as it does in the terminal. All features are supported: |
|
|
| :::note |
| Some built-in slash commands like `/undo` and `/redo` are currently unsupported. |
| ::: |
|
|
| - Built-in tools (file operations, terminal commands, etc.) |
| - Custom tools and slash commands |
| - MCP servers configured in your OpenCode config |
| - Project-specific rules from `AGENTS.md` |
| - Custom formatters and linters |
| - Agents and permissions system |
|
|