ACP Editor Integration for Hermes Agent: Run AI Coding in Your IDE
Run Hermes Agent as an ACP server inside VS Code, Zed, or JetBrains.

Hermes Agent ACP Server Reference
Overview
Hermes Agent can run as an ACP (Agent Communication Protocol) server, allowing ACP-compatible editors and hosts to interact with it over stdio. In this mode, Hermes retains its existing identity, providers, memory, skills, and tools while another application owns the transport and conversation logic.
Use this mode when you want an editor (VS Code, Zed, JetBrains, Buzz Desktop) to render chat messages, tool activity, file diffs, terminal commands, approval prompts, and streamed responses from Hermes. You can also use it to route collaboration events from another host into Hermes while Hermes keeps its own configuration and toolset.
Capabilities
When running as an ACP server, Hermes exposes the following capabilities:
- Renders chat messages, tool activity, file diffs, terminal commands, approval prompts, and streamed thinking or response chunks in editors.
- Exposes a curated toolset including:
read_file,write_file,patch,search_files,terminal,process, web and browser tools, memory, todo, session search, skills,execute_code,delegate_task, and vision. - Excludes messaging delivery and cronjob management.
- Supports session-scoped edit auto-approval with modes:
allow_once,allow_session,allow_always, anddeny. - Supports a model picker in Buzz Desktop (v0.5.1+) showing all authenticated providers.
- Supports a Buzz relay bridge for Nostr-based collaboration channels.
- Supports observer frames (kind 24200) for live activity logging in Buzz Desktop.
- Supports host-controlled MCP server skipping via
HERMES_ACP_SKIP_CONFIGURED_MCP=1.
Prerequisites
Before using the ACP server, ensure the following prerequisites are met:
- Hermes must be installed normally.
- The ACP extra must be installed (see Install ACP extra procedure).
- For browser tools: Node.js 22 LTS and npm packages must be installed (see Install browser tools procedure).
- For the Buzz bridge:
buzz-acpandbuzzCLI must be built from the Buzz repository; a dedicated Nostr keypair must be minted and registered; the agent identity must be added to channels. - For VS Code: the ACP Client extension must be installed.
- For Zed: Hermes provider credentials must be configured via
hermes modelor in~/.hermes/.envor~/.hermes/config.yaml. - For JetBrains: an ACP-compatible plugin must be installed.
- For Buzz Desktop: Hermes must be installed normally; Buzz discovers it automatically or can be configured manually.
Installation and Setup
Install ACP Extra
- Install Hermes normally.
- Run the following command:
This installs thecd ~/.hermes/hermes-agent && uv pip install -e '.[acp]'agent-client-protocoldependency and enables the following commands:hermes acp,hermes-acp, andpython -m acp_adapter.
Launch ACP Server
Run any of the following commands:
hermes acp
hermes-acp
python -m acp_adapter
Hermes logs to stderr; stdout is reserved for ACP JSON-RPC traffic. For non-interactive checks, use:
hermes acp --version
hermes acp --check
Install Browser Tools (Optional)
Browser tools require Node.js 22 LTS and npm packages. They are not part of the Python wheel.
To install interactively (prompts before approximately 400 MB download):
hermes acp --setup-browser
To install non-interactively:
hermes acp --setup-browser --yes
Alternatively, the terminal-auth flow (hermes acp --setup) offers browser bootstrap as a follow-up after model selection.
What the setup does:
- Installs Node.js 22 LTS into
~/.hermes/node/if missing. - Runs
npm install -g agent-browser @askjo/camofox-browserinto that prefix. - Installs Playwright Chromium or uses detected system Chrome/Chromium.
The setup is idempotent: re-running skips completed work.
Set Up Buzz Relay Bridge
- Complete ACP installation and run
hermes acp --check. - Build
buzz-acpandbuzzCLI from the Buzz repository:cargo build --release -p buzz-acp - Mint a dedicated Nostr keypair for Hermes:
Register it as a relay member:buzz-admin generate-key
Do not reuse a human keypair.buzz-admin add-member - Add that identity to the intended Buzz channels.
- Set the following environment variables:
BUZZ_RELAY_URL(required): WebSocket URL of the Buzz relay (e.g.,wss://community.example.com).BUZZ_PRIVATE_KEY(required): Nostr private key for the Hermes agent identity. Do not commit or paste.BUZZ_API_TOKEN(conditional): API token for relay authentication (only if relay enforces token auth). Do not commit or paste.BUZZ_ACP_AGENT_COMMAND(required): Command to launch Hermes (e.g.,'hermes').BUZZ_ACP_AGENT_ARGS(required): Arguments for the command (e.g.,'acp').
- Run:
buzz-acp - For persistent deployment, run
buzz-acpunder a service manager as the same OS user that owns the Hermes home. - To expose activity in Buzz Desktop, add:
This publishes encrypted kind 24200 observer frames to the agent's owner. The Desktop must be online before the turn starts for durable history.BUZZ_ACP_RELAY_OBSERVER='true'
Treat the bridge as privileged automation: use a dedicated OS account, restrict prompters via BUZZ_ACP_AGENT_OWNER, and grant membership only in expected channels.
Connecting Editors
Connect VS Code
- Install the ACP Client extension.
- Open the ACP Client panel from the Activity Bar.
- Select Hermes Agent from the built-in agent list.
- Connect and start chatting.
Optional manual definition: add to VS Code settings under acp.agents:
{"Hermes Agent": {"command": "hermes", "args": ["acp"]}}
Connect Zed
- Open the Agent Panel.
- Add a custom agent server with the following configuration:
{"agent_servers": {"hermes-agent": {"type": "custom", "command": "hermes", "args": ["acp"]}}} - Start a new Hermes external-agent thread.
Prerequisite: configure Hermes provider credentials with hermes model, or set them in ~/.hermes/.env or ~/.hermes/config.yaml.
Connect JetBrains
- Use an ACP-compatible plugin.
- Point it at
hermes acporhermes-acp.
Connect Buzz Desktop
- Ensure Hermes is installed normally; Buzz discovers it automatically (Settings → Runtimes).
- If discovery fails, ensure
hermes-acporhermesis on the login-shell PATH:command -v hermes-acp || command -v hermes - Recent installs write both launchers into
~/.local/bin. Runhermes updateto addhermes-acpto older installs. - Manual fallback: configure the Buzz agent command as
hermeswith args["acp"].
Configure Model in Buzz Desktop
In Buzz Desktop v0.5.1+, the model menu shows all models from authenticated providers. Entry IDs follow the format provider:model (e.g., openrouter:z-ai/glm-5.1) or custom:<name>:<model> for custom OpenAI-compatible endpoints.
Picking a model applies to that agent's session only; it does not change the Hermes-wide default. Use hermes model for that.
Keep Buzz Agents Owner-Only
Leave "Who can talk to this agent" set to "Owner only". Do not select "Anyone" — it grants shell access to all channel authors without prompting.
Note: approvals.mode: manual does not prevent auto-approval by Buzz. platform_toolsets.acp cannot drop the terminal tool. Use !shutdown from the owner to stop the agent in any mode; Buzz ignores it from others.
Parameters
HERMES_ACP_SKIP_CONFIGURED_MCP
Set to exactly 1 to skip starting globally configured MCP servers from config.yaml before the ACP JSON-RPC loop. Hosts that own MCP themselves can use this to avoid delays from unrelated servers. Only global discovery is skipped; MCP servers from session/new are still registered.
Not required. Default is unset/0/false, which keeps default behavior.
BUZZ_RELAY_URL
WebSocket URL of the Buzz relay (e.g., wss://community.example.com). Required for the Buzz bridge.
BUZZ_PRIVATE_KEY
Nostr private key for the Hermes agent identity. Do not commit or paste. Required for the Buzz bridge.
BUZZ_API_TOKEN
API token for relay authentication (only if relay enforces token auth). Do not commit or paste. Conditionally required.
BUZZ_ACP_AGENT_COMMAND
Command to launch Hermes (e.g., 'hermes'). Required for the Buzz bridge.
BUZZ_ACP_AGENT_ARGS
Arguments for the command (e.g., 'acp'). Required for the Buzz bridge.
BUZZ_ACP_RELAY_OBSERVER
Set to 'true' to publish encrypted kind 24200 observer frames to the agent's owner for live activity logging in Buzz Desktop. Not required.
BUZZ_ACP_AGENT_OWNER
Restricts which Buzz users can prompt the agent (owner-only respond gate). Not required.
Constraints and Caveats
- ACP sessions are tracked only while the server is running. List, load, resume, and fork operations are scoped to the current process.
- The working directory binds the editor's cwd to the Hermes task ID. File and terminal tools run relative to the editor workspace, not the server process cwd.
- Approval prompts may be answered programmatically by the host (e.g., Buzz Desktop auto-approves). Treat this as unattended execution regardless of the approvals setting.
- On timeout or error, the approval bridge denies the request.
allow_sessionapproval is scoped to the current ACP session only. It is cleared when the session ends or the editor restarts.allow_alwayswrites a permanent allowlist entry that persists across restarts.allow_onceapplies only to the current tool call.- The Buzz bridge auto-approves permission requests with
allow_once. Terminal andexecute_coderun without prompting. - Neither
approvals.mode: manualnorplatform_toolsets.acpcan prevent Buzz from auto-approving or narrow the toolset. - Do not set host integration variables like
HERMES_ACP_SKIP_CONFIGURED_MCPby hand in.envorconfig.yaml. - Browser tools require Node.js 22 LTS and npm packages; they are not part of the Python wheel.
- The Buzz bridge discovers channels automatically via membership. There is no separate channel list in Hermes config.
- Observer frames are ephemeral on the relay. The Desktop must be online before the turn starts for durable history.
- The model picker shows only models from providers with configured credentials. A missing model means missing credentials.
- Picking a model in Buzz Desktop does not change the Hermes-wide default.
- Buzz creates every agent with "Owner only" by default. Selecting "Anyone" grants shell access to all channel authors without warning.
- Use a dedicated Nostr keypair for each agent. Do not reuse a human keypair.
- Do not commit or paste private keys or API tokens.
- For a persistent Buzz bridge, run it under a service manager as the same OS user that owns the Hermes home.
Failure Modes
ACP Agent Does Not Appear in Editor
Possible causes:
- The host command is not pointing to
hermes acp. - Hermes is not on the PATH.
- The ACP extra is not installed.
ACP Starts but Immediately Errors
Run the following diagnostic commands:
hermes acp --version
hermes acp --check
hermes doctor
hermes status
Missing Credentials
Configure credentials with hermes model or edit ~/.hermes/.env. Use hermes acp --setup for interactive setup.
Buzz Desktop Discovery Fails
Ensure hermes-acp or hermes is on the login-shell PATH. Run hermes update. Manually configure the command and args.
Browser Tools Fail
Node.js or npm packages are not installed. Run hermes acp --setup-browser.
Examples
VS Code Example
Open the ACP Client panel, select Hermes Agent, connect, and start chatting.
Zed Example
Add a custom agent server with command 'hermes' and args ['acp'], then start a new thread.
Buzz Desktop Example
Open Settings → Runtimes. Hermes appears automatically. If not, configure the command as 'hermes' with args ['acp'].
Buzz Bridge Example
Set the environment variables and run buzz-acp. The bridge discovers channels automatically.
Model Picker Example
In Buzz Desktop v0.5.1+, select a model from the menu. Entry IDs look like openrouter:z-ai/glm-5.1.
Session-Scoped Approval Example
In the editor, pick "Allow for session" to approve matching commands for the current session only.
Sources & References
This page was researched from 1 independent source, combined and verified for completeness.
- 1.ACP Editor IntegrationOfficial documentation · primary source
The #1 AI Newsletter
The most important ai updates, guides, and fixes — one weekly email.
No spam, unsubscribe anytime. Privacy policy