Skip to main content

ACP Protocol Support

CoStrict supports the Agent Client Protocol (ACP), allowing you to use it directly inside compatible editors and IDEs.

ACP is an open protocol that standardizes communication between code editors and AI coding agents.


Starting the ACP Server​

Run CoStrict as an ACP subprocess, communicating with the editor via JSON-RPC over stdio:

cs acp

Editor Configuration​

Zed​

Add to ~/.config/zed/settings.json:

~/.config/zed/settings.json
{
"agent_servers": {
"CoStrict": {
"command": "cs",
"args": ["acp"]
}
}
}

Open via: run agent: new thread in the Command Palette.

Bind a keyboard shortcut (keymap.json):

keymap.json
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "CoStrict",
"command": {
"command": "cs",
"args": ["acp"]
}
}
}
}
]
}
}
]

JetBrains IDEs​

Add to acp.json in your JetBrains IDE:

acp.json
{
"agent_servers": {
"CoStrict": {
"command": "/absolute/path/to/cs",
"args": ["acp"]
}
}
}

Open via: select CoStrict in the AI Chat agent picker.


Avante.nvim​

Add to your Avante.nvim configuration:

{
acp_providers = {
["costrict"] = {
command = "cs",
args = { "acp" }
}
}
}

If you need to pass environment variables:

{
acp_providers = {
["costrict"] = {
command = "cs",
args = { "acp" },
env = {
COSTRICT_BASE_URL = os.getenv("COSTRICT_BASE_URL")
}
}
}
}

CodeCompanion.nvim​

Add to your Neovim configuration:

require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "costrict",
model = "claude-sonnet-4-5",
},
},
},
})

Feature Support​

When using CoStrict via ACP, it behaves identically to the terminal experience — all features are supported:

  • Built-in tools (file operations, shell commands, etc.)
  • Custom tools and slash commands
  • MCP servers
  • Project rules from AGENTS.md
  • Custom formatters
  • Agent and permission system

Some built-in slash commands such as /undo and /redo are not currently supported via ACP.