|
|
@@ -0,0 +1,103 @@
|
|
|
+---
|
|
|
+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": "OpenCode" }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+]
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 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")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 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
|