mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
The Zed ACP Registry path (uvx --from 'hermes-agent[acp]==X' hermes-acp)
gets a Python-only install. Browser tools depend on the agent-browser npm
package + Chromium, neither of which are in the wheel. Without an
explicit bootstrap, registry users have no path to working browser tools.
Ship a bundled, idempotent bootstrap script (Linux/macOS bash + Windows
PowerShell) inside acp_adapter/bootstrap/ as wheel package-data. New
entry points:
hermes acp --setup-browser # interactive; prompts before Chromium download
hermes acp --setup-browser --yes # non-interactive
hermes-acp --setup-browser
The terminal-auth flow (hermes acp --setup) also offers the browser
bootstrap as a follow-up after model selection, so first-run registry
users get the option without knowing the flag exists.
Key design choices:
- npm install -g --prefix $NODE_PREFIX so we never need sudo. System Node
on PATH is respected; only the install target is redirected to the
user-writable Hermes-managed Node prefix.
- tools/browser_tool.py::_browser_candidate_path_dirs() already walks
$HERMES_HOME/node/bin, so installed binaries are discovered with no
agent-side code change.
- System Chrome/Chromium detection short-circuits the ~400 MB Playwright
download when a suitable browser already exists.
- Bash + PowerShell live as ONE copy each under acp_adapter/bootstrap/.
Not duplicated under scripts/. install.sh and install.ps1 keep their
inline browser blocks for the source-checkout path.
E2E validated end-to-end:
bash bootstrap_browser_tools.sh --skip-chromium
→ installs agent-browser into ~/.hermes/node/bin/
tools.browser_tool._find_agent_browser()
→ returns the installed path
check_browser_requirements()
→ returns True (browser tools register)
Tests:
- tests/acp/test_entry.py: 11 tests covering --setup-browser dispatch
(linux + windows + --yes forwarding + failure propagation), the
terminal-auth follow-up prompt path, and a package-data wheel-shipping
assertion that catches any future pyproject.toml regression.
Docs: website/docs/user-guide/features/acp.md gains a 'Browser tools
(optional)' subsection with the two-line install + what-it-does.
262 lines
7.2 KiB
Markdown
262 lines
7.2 KiB
Markdown
---
|
|
sidebar_position: 11
|
|
title: "ACP Editor Integration"
|
|
description: "Use Hermes Agent inside ACP-compatible editors such as VS Code, Zed, and JetBrains"
|
|
---
|
|
|
|
# ACP Editor Integration
|
|
|
|
Hermes Agent can run as an ACP server, letting ACP-compatible editors talk to Hermes over stdio and render:
|
|
|
|
- chat messages
|
|
- tool activity
|
|
- file diffs
|
|
- terminal commands
|
|
- approval prompts
|
|
- streamed thinking / response chunks
|
|
|
|
ACP is a good fit when you want Hermes to behave like an editor-native coding agent instead of a standalone CLI or messaging bot.
|
|
|
|
## What Hermes exposes in ACP mode
|
|
|
|
Hermes runs with a curated `hermes-acp` toolset designed for editor workflows. It includes:
|
|
|
|
- file tools: `read_file`, `write_file`, `patch`, `search_files`
|
|
- terminal tools: `terminal`, `process`
|
|
- web/browser tools
|
|
- memory, todo, session search
|
|
- skills
|
|
- execute_code and delegate_task
|
|
- vision
|
|
|
|
It intentionally excludes things that do not fit typical editor UX, such as messaging delivery and cronjob management.
|
|
|
|
## Installation
|
|
|
|
Install Hermes normally, then add the ACP extra:
|
|
|
|
```bash
|
|
pip install -e '.[acp]'
|
|
```
|
|
|
|
This installs the `agent-client-protocol` dependency and enables:
|
|
|
|
- `hermes acp`
|
|
- `hermes-acp`
|
|
- `python -m acp_adapter`
|
|
|
|
For Zed registry installs, Zed launches Hermes through the official ACP Registry entry. That entry uses a `uvx` distribution that runs:
|
|
|
|
```bash
|
|
uvx --from 'hermes-agent[acp]==<version>' hermes-acp
|
|
```
|
|
|
|
Make sure `uv` is available on `PATH` before using the registry install path.
|
|
|
|
## Launching the ACP server
|
|
|
|
Any of the following starts Hermes in ACP mode:
|
|
|
|
```bash
|
|
hermes acp
|
|
```
|
|
|
|
```bash
|
|
hermes-acp
|
|
```
|
|
|
|
```bash
|
|
python -m acp_adapter
|
|
```
|
|
|
|
Hermes logs to stderr so stdout remains reserved for ACP JSON-RPC traffic.
|
|
|
|
For non-interactive checks:
|
|
|
|
```bash
|
|
hermes acp --version
|
|
hermes acp --check
|
|
```
|
|
|
|
### Browser tools (optional)
|
|
|
|
Browser tools (`browser_navigate`, `browser_click`, etc.) depend on the
|
|
`agent-browser` npm package and Chromium, which aren't part of the Python
|
|
wheel. Install them with:
|
|
|
|
```bash
|
|
hermes acp --setup-browser # interactive (prompts before ~400 MB download)
|
|
hermes acp --setup-browser --yes # accept the download non-interactively
|
|
```
|
|
|
|
This is the standalone command. The Zed registry's terminal-auth flow (`hermes acp --setup`) also offers the browser bootstrap as a follow-up question after model selection, so most users never need to run `--setup-browser` directly.
|
|
|
|
What it does:
|
|
|
|
- Installs Node.js 22 LTS into `~/.hermes/node/` if missing
|
|
- `npm install -g agent-browser @askjo/camofox-browser` into that prefix (no sudo needed — `npm`'s `--prefix` points at the user-writable Hermes-managed Node)
|
|
- Installs Playwright Chromium, or uses a detected system Chrome/Chromium when available
|
|
|
|
The bootstrap is idempotent — re-running it is fast and skips work that's already done.
|
|
|
|
## Editor setup
|
|
|
|
### VS Code
|
|
|
|
Install the [ACP Client](https://marketplace.visualstudio.com/items?itemName=formulahendry.acp-client) extension.
|
|
|
|
To connect:
|
|
|
|
1. Open the ACP Client panel from the Activity Bar.
|
|
2. Select **Hermes Agent** from the built-in agent list.
|
|
3. Connect and start chatting.
|
|
|
|
If you want to define Hermes manually, add it through VS Code settings under `acp.agents`:
|
|
|
|
```json
|
|
{
|
|
"acp.agents": {
|
|
"Hermes Agent": {
|
|
"command": "hermes",
|
|
"args": ["acp"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Zed
|
|
|
|
Zed v0.221.x and newer installs external agents through the official ACP Registry.
|
|
|
|
1. Open the Agent Panel.
|
|
2. Click **Add Agent**, or run the `zed: acp registry` command.
|
|
3. Search for **Hermes Agent**.
|
|
4. Install it and start a new Hermes external-agent thread.
|
|
|
|
Prerequisites:
|
|
|
|
- Configure Hermes provider credentials first with `hermes model`, or set them in `~/.hermes/.env` / `~/.hermes/config.yaml`.
|
|
- Install `uv` so the registry launcher can run `uvx --from 'hermes-agent[acp]==<version>' hermes-acp`.
|
|
|
|
For local development before the registry entry is available, use a custom agent server in Zed settings:
|
|
|
|
```json
|
|
{
|
|
"agent_servers": {
|
|
"hermes-agent": {
|
|
"type": "custom",
|
|
"command": "hermes",
|
|
"args": ["acp"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### JetBrains
|
|
|
|
Use an ACP-compatible plugin and point it at:
|
|
|
|
```text
|
|
/path/to/hermes-agent/acp_registry
|
|
```
|
|
|
|
## Registry manifest
|
|
|
|
The source copy of Hermes' official ACP Registry metadata lives at:
|
|
|
|
```text
|
|
acp_registry/agent.json
|
|
acp_registry/icon.svg
|
|
```
|
|
|
|
The upstream registry PR copies those files into the top-level `hermes-agent/` directory in `agentclientprotocol/registry`.
|
|
|
|
The registry entry uses a `uvx` distribution that points directly at the `hermes-agent` PyPI release:
|
|
|
|
```text
|
|
uvx --from 'hermes-agent[acp]==<version>' hermes-acp
|
|
```
|
|
|
|
The registry CI verifies that the pinned version exists on PyPI, so the manifest's `version` and uvx `package` pin must always match `pyproject.toml`. `scripts/release.py` keeps them in lockstep automatically.
|
|
|
|
## Configuration and credentials
|
|
|
|
ACP mode uses the same Hermes configuration as the CLI:
|
|
|
|
- `~/.hermes/.env`
|
|
- `~/.hermes/config.yaml`
|
|
- `~/.hermes/skills/`
|
|
- `~/.hermes/state.db`
|
|
|
|
Provider resolution uses Hermes' normal runtime resolver, so ACP inherits the currently configured provider and credentials. Hermes also advertises a terminal auth method (`--setup`) for first-run registry clients; this opens Hermes' interactive model/provider setup.
|
|
|
|
## Session behavior
|
|
|
|
ACP sessions are tracked by the ACP adapter's in-memory session manager while the server is running.
|
|
|
|
Each session stores:
|
|
|
|
- session ID
|
|
- working directory
|
|
- selected model
|
|
- current conversation history
|
|
- cancel event
|
|
|
|
The underlying `AIAgent` still uses Hermes' normal persistence/logging paths, but ACP `list/load/resume/fork` are scoped to the currently running ACP server process.
|
|
|
|
## Working directory behavior
|
|
|
|
ACP sessions bind the editor's cwd to the Hermes task ID so file and terminal tools run relative to the editor workspace, not the server process cwd.
|
|
|
|
## Approvals
|
|
|
|
Dangerous terminal commands can be routed back to the editor as approval prompts. ACP approval options are simpler than the CLI flow:
|
|
|
|
- allow once
|
|
- allow always
|
|
- deny
|
|
|
|
On timeout or error, the approval bridge denies the request.
|
|
|
|
## Troubleshooting
|
|
|
|
### ACP agent does not appear in the editor
|
|
|
|
Check:
|
|
|
|
- In Zed, open the ACP Registry with `zed: acp registry` and search for **Hermes Agent**.
|
|
- For manual/local development, verify the custom `agent_servers` command points to `hermes acp`.
|
|
- Hermes is installed and on your PATH.
|
|
- The ACP extra is installed (`pip install -e '.[acp]'`).
|
|
- `uv` is installed if launching from the official Zed registry entry.
|
|
|
|
### ACP starts but immediately errors
|
|
|
|
Try these checks:
|
|
|
|
```bash
|
|
hermes acp --version
|
|
hermes acp --check
|
|
hermes doctor
|
|
hermes status
|
|
```
|
|
|
|
### Missing credentials
|
|
|
|
ACP mode uses Hermes' existing provider setup. Configure credentials with:
|
|
|
|
```bash
|
|
hermes model
|
|
```
|
|
|
|
or by editing `~/.hermes/.env`. Registry clients can also trigger Hermes' terminal auth flow, which runs the same interactive provider/model setup.
|
|
|
|
### Zed registry launcher cannot find uv
|
|
|
|
Install `uv` from the official uv installation docs, then retry the Hermes Agent thread from Zed.
|
|
|
|
## See also
|
|
|
|
- [ACP Internals](../../developer-guide/acp-internals.md)
|
|
- [Provider Runtime Resolution](../../developer-guide/provider-runtime.md)
|
|
- [Tools Runtime](../../developer-guide/tools-runtime.md)
|