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.

Editor & IDEintermediate7 min read
ACP Editor Integration for Hermes Agent: Run AI Coding in Your IDE

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, and deny.
  • 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-acp and buzz CLI 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 model or in ~/.hermes/.env or ~/.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

  1. Install Hermes normally.
  2. Run the following command:
    cd ~/.hermes/hermes-agent && uv pip install -e '.[acp]'
    
    This installs the agent-client-protocol dependency and enables the following commands: hermes acp, hermes-acp, and python -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-browser into 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

  1. Complete ACP installation and run hermes acp --check.
  2. Build buzz-acp and buzz CLI from the Buzz repository:
    cargo build --release -p buzz-acp
    
  3. Mint a dedicated Nostr keypair for Hermes:
    buzz-admin generate-key
    
    Register it as a relay member:
    buzz-admin add-member
    
    Do not reuse a human keypair.
  4. Add that identity to the intended Buzz channels.
  5. 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').
  6. Run:
    buzz-acp
    
  7. For persistent deployment, run buzz-acp under a service manager as the same OS user that owns the Hermes home.
  8. To expose activity in Buzz Desktop, add:
    BUZZ_ACP_RELAY_OBSERVER='true'
    
    This publishes encrypted kind 24200 observer frames to the agent's owner. The Desktop must be online before the turn starts for durable history.

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

  1. Install the ACP Client extension.
  2. Open the ACP Client panel from the Activity Bar.
  3. Select Hermes Agent from the built-in agent list.
  4. Connect and start chatting.

Optional manual definition: add to VS Code settings under acp.agents:

{"Hermes Agent": {"command": "hermes", "args": ["acp"]}}

Connect Zed

  1. Open the Agent Panel.
  2. Add a custom agent server with the following configuration:
    {"agent_servers": {"hermes-agent": {"type": "custom", "command": "hermes", "args": ["acp"]}}}
    
  3. 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

  1. Use an ACP-compatible plugin.
  2. Point it at hermes acp or hermes-acp.

Connect Buzz Desktop

  1. Ensure Hermes is installed normally; Buzz discovers it automatically (Settings → Runtimes).
  2. If discovery fails, ensure hermes-acp or hermes is on the login-shell PATH:
    command -v hermes-acp || command -v hermes
    
  3. Recent installs write both launchers into ~/.local/bin. Run hermes update to add hermes-acp to older installs.
  4. Manual fallback: configure the Buzz agent command as hermes with 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_session approval is scoped to the current ACP session only. It is cleared when the session ends or the editor restarts.
  • allow_always writes a permanent allowlist entry that persists across restarts.
  • allow_once applies only to the current tool call.
  • The Buzz bridge auto-approves permission requests with allow_once. Terminal and execute_code run without prompting.
  • Neither approvals.mode: manual nor platform_toolsets.acp can prevent Buzz from auto-approving or narrow the toolset.
  • Do not set host integration variables like HERMES_ACP_SKIP_CONFIGURED_MCP by hand in .env or config.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.

Newsletter

The #1 AI Newsletter

The most important ai updates, guides, and fixes — one weekly email.

No spam, unsubscribe anytime. Privacy policy

Other Hermes Agent integrations