| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- ---
- 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.
- ---
- ## Configure
- 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.
- ---
- ### Zed
- Add to your [Zed](https://zed.dev) configuration (`~/.config/zed/settings.json`):
- ```json title="~/.config/zed/settings.json"
- {
- "agent_servers": {
- "OpenCode": {
- "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"]
- }
- }
- }
- }
- ]
- }
- }
- ]
- ```
- ---
- ### JetBrains IDEs
- 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="~/.config/zed/settings.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.
- ---
- ### Avante.nvim
- 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")
- }
- }
- }
- }
- ```
- ---
- ### CodeCompanion.nvim
- 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({
- strategies = {
- 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/configuration/adapters#environment-variables-setting-an-api-key) in the CodeCompanion.nvim documentation for full details.
- ## Support
- 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
|