Editor Integration
Octomind integrates with code editors via the ACP (Agent Client Protocol), providing AI assistance directly in your IDE.
Features
- Full session management with tool access
- Streaming tool execution with real-time feedback
- Slash commands available in the editor (advertised over ACP)
- Image and video attachments (clients can attach images inline; video arrives as embedded blob resources)
- MCP server injection from editor config (stdio and HTTP transports)
- Cost and token-usage reporting via an ACP
_metaside-channel - Background inbox monitor: scheduled messages, webhook injections, and async agent results appear mid-session
- Role-based access control
How It Works
Octomind runs as an ACP agent over stdio using JSON-RPC:
octomind acp [TAG]The editor launches this as a subprocess and communicates via JSON-RPC messages on stdin/stdout. Stderr is reserved for logging (it never carries protocol traffic).
TAG is optional. When omitted, the agent uses the default role from your config (the shipped default is assistant:concierge). TAG can be:
- A local role name from your config (e.g.
assistant), or - A tap agent addressed as
category:variant(e.g.developer:general).
developer:generalis a tap-registry agent provided by the built-in default tapmuvon/tap, not a local config role. The stock config ships the rolesassistant,task_refiner,task_researcher, andreduce. If you point an editor atdeveloper:general, make sure the tap is installed (it is the default tap), otherwise the agent will fail to resolve the tag. To stay fully local, omit the tag or useassistant.
Each ACP session also spawns a background inbox monitor. It processes scheduled messages (/schedule), webhook injections, and background-agent results without waiting for a user prompt; these arrive in the editor as user-side message chunks. See the ACP Protocol reference for the full handshake and session lifecycle.
octomind acp flags
| Flag | Description |
|---|---|
TAG | Agent tag (e.g. developer:general) or local role name. Omit for the config default. |
--name, -n | Preferred session name for the next new_session request |
--resume, -r | Resume a specific session by name on the next new_session |
--resume-recent | Resume the most recent session for the current working directory |
--model, -m | Override the model for all sessions started by this agent (priority: --model > role.model > config.model; a [taps] entry overrides config.model for tap agents) |
--sandbox | Restrict all filesystem writes to the current working directory |
--hook | Activate a webhook hook by name (defined in [[hooks]] config); repeatable |
Neovim
The editor-side snippets below are illustrative. Plugin configuration shapes change over time; confirm against each plugin's current docs.
CodeCompanion.nvim
CodeCompanion does not ship a built-in octomind adapter, so you configure Octomind as a custom ACP adapter. Adjust to match the version of CodeCompanion you have installed.
require("codecompanion").setup({
adapters = {
octomind = function()
return require("codecompanion.adapters").extend("octomind", {
command = "octomind",
args = { "acp", "developer:general" },
})
end,
},
strategies = {
chat = { adapter = "octomind" },
inline = { adapter = "octomind" },
},
})To stay fully local without the tap registry, use args = { "acp", "assistant" } (or { "acp" } to use the config default).
avante.nvim
require("avante").setup({
provider = "octomind",
vendors = {
octomind = {
command = "octomind",
args = { "acp", "developer:general" },
},
},
})Zed
Zed has native ACP support and configures external ACP agents under agent_servers with a command and args. Add to your Zed settings.json:
{
"agent_servers": {
"Octomind": {
"command": "octomind",
"args": ["acp", "developer:general"]
}
}
}Replace developer:general with assistant (or drop the second arg) to use a local role instead of the tap agent. See Zed's external-agent configuration docs for the authoritative schema.
JetBrains IDEs
Supported via the AI Assistant plugin. Configure an external ACP agent:
- Open Settings > Tools > AI Assistant
- Add external agent
- Set command:
octomind acp developer:general(oroctomind acp assistantfor a local role)
MCP Server Injection
Editors can inject additional MCP servers into the Octomind session through the ACP initialize / new_session handshake. Behavior:
- Per-session scope: injected servers are merged into a per-session config snapshot and added to the role's
server_refsfor that session only. Your base config is never mutated. - Supported transports:
stdioandHTTPonly. The agent advertises HTTP MCP support (mcp_capabilities.http = true) during initialization, so clients offer HTTP servers. - Unsupported transports:
SSEand any unknown transport are skipped (logged, not connected). - Timeout: injected servers use a hardcoded 30-second timeout.
The agent also advertises load_session support, so clients can resume sessions by ID.
Available Slash Commands
The ACP agent advertises 23 commands during the session. Names are sent without the leading / — the client prepends it when displaying:
help, role, model, done, info, clear, copy, context, list, session, run, workflow, mcp, plan, prompt, image, video, loglevel, report, skill, effort, schedule, exit
Notes:
- This advertised set is a subset of the full CLI session commands. Commands like
/learning,/share, and/analyzeare not advertised over ACP. -
/doneis handled specially in ACP: it compresses the conversation and reports the result. If you pass trailing instructions (/done <instructions>), the agent compresses first, sends the compression status, then processes the instructions as a normal prompt. - The advertised
workflowcommand is a legacy no-op —/workflowwas removed; run multi-step workflows via theoctomind workflow <file.toml>CLI. -
/effortacceptslow,medium,high,xhigh, ormax(the advertised input hint only shows the first three). - Editors that support arbitrary slash input may still send other commands as prompts; only the 23 above are surfaced in the client command menu.
Programmatic command execution
Beyond the slash-command menu, clients can invoke commands programmatically through the ACP extension method namespace octomind/command. The request carries { session_id, command, args } and the response returns { success, output, error } with structured JSON output. This lets editor integrations run session commands without routing them through the prompt stream.
Cost and Usage Reporting
As a session runs, the agent emits a SessionInfoUpdate notification carrying a _meta["octomind.usage"] payload with session_tokens, session_cost, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, and reasoning_tokens. Clients that pass _meta through can display live cost and token usage.
Roles
The role you pass to octomind acp determines which tools the session can use.
-
assistant(shipped default, full access) -- file editing, shell, and code analysis via thecore,runtime,filesystem, andagentMCP servers (allowed_tools = ["core:*", "runtime:*", "filesystem:*", "agent:*"]). -
task_refiner-- lightweight query refinement; no MCP servers. -
task_researcher-- read-only reconnaissance;filesystemserver with only theviewtool allowed. -
reduce-- session-history compression; special-purpose. - Tap agents like
developer:generalprovide richer development presets and come from the built-in default tapmuvon/tap. - Custom roles work the same as in CLI sessions.
Troubleshooting
Agent not found:
Ensure octomind is on your PATH. Try running octomind acp assistant in a terminal first. If you use a tap agent like developer:general, confirm the tap is installed.
No response / hangs:
- Check that the API key is set in your shell environment
- Editor may need to inherit shell environment variables
- Check
~/.local/share/octomind/logs/acp-debug.logfor runtime errors
Tools not available:
- Verify the role has correct
server_refsandallowed_tools - Check
~/.local/share/octomind/logs/acp-errors.jsonlfor structured error details
Agent fails to start at all:
- In ACP mode stdout/stderr are reserved for JSON-RPC, so startup failures are written to
~/.local/share/octomind/logs/acp-init-errors.log
JetBrains issues:
- Ensure AI Assistant plugin is up to date
- The plugin must support external ACP agents
See Also
- ACP Protocol -- full handshake, capabilities, and session lifecycle
- WebSocket Server -- alternative integration transport
- CLI Reference -- complete
octomindcommand and flag reference - Session Commands -- all interactive session commands