Hermes
Hermes (Nous Research) is a command-line / TUI coding agent. There are two ways to run it on the ZeroSignal network:
- The ZeroSignal plugin (recommended). ZeroSignal shows up in Hermes as a provider of its own. The model picker includes what the network is serving, alongside a built-in shortlist, and Hermes' reasoning-effort setting is passed through, fitted to the levels each model accepts. Set it up with one command.
- A plain custom endpoint. Hermes talks to any OpenAI-compatible provider, so the proxy works without the plugin too — useful on a Hermes older than 0.21, which the plugin does not support.
Either way, the proxy must be running (zs-proxy proxy start) and
funded — see How-to guides.
Recommended: the ZeroSignal plugin
Install Hermes
Skip this if you already have it.
- macOS / Linux
- Windows
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
(Or grab the Hermes Desktop installer from the Hermes site.)
Connect it and install the plugin
zs-proxy connect hermes --plugin # configure Hermes and install the plugin
zs-proxy connect hermes --plugin --model qwen3-coder # ...and pin a default model
This writes Hermes' settings (see what it writes) and then runs Hermes' own installer in your terminal, where you can watch it fetch the plugin and stop it with Ctrl-C. It installs the version pinned in Hermes' plugin catalog, not the latest on the branch.
To run the two halves yourself instead, in either order:
hermes plugins install zerosignal --enable
zs-proxy connect hermes
Confirm and start a session
hermes model # pick ZeroSignal, then a model
hermes --tui # start Hermes (or plain `hermes`) and send a message
A reply confirms the setup works.
Re-run zs-proxy connect hermes any time to point Hermes back at the proxy, for
example after moving the proxy to a different port. It leaves an installed
plugin alone.
What connect hermes writes
Two files in your Hermes home — ~/.hermes on macOS and Linux,
%LOCALAPPDATA%\hermes on Windows, or wherever HERMES_HOME points. Your other
settings in both are kept.
config.yaml gets a zerosignal provider, made the active one. The original
is backed up to config.yaml.bak first. The file is rewritten: your settings
survive, but comments and custom formatting in it do not.
providers:
zerosignal:
base_url: http://127.0.0.1:9376/v1 # your live proxy endpoint
api_key: zerosignal-local # placeholder — the proxy ignores it
transport: chat_completions
# default_model: qwen3-coder # only when you pass --model
model:
provider: zerosignal
# default: qwen3-coder # only when you pass --model
.env gets two lines, spliced in place. Only these two lines change, and no
backup is made:
ZEROSIGNAL_API_KEY=zerosignal-local
ZEROSIGNAL_BASE_URL=http://127.0.0.1:9376/v1
Without the plugin, Hermes uses the provider block in config.yaml. With the
plugin installed, it ignores that block and takes the key and endpoint from
.env. Writing both keeps one connect hermes correct whether you install the
plugin before it, after it, or never.
ZEROSIGNAL_API_KEY=zerosignal-local is a placeholder the proxy ignores; your
wallet is the credential.
Preview the result without writing anything:
zs-proxy connect hermes --print
--print masks every other value in .env, since that file holds your other
providers' real keys.
Without the plugin
zs-proxy connect hermes on its own is enough: Hermes uses the provider block
above, and hermes model shows the active provider as zerosignal.
You can also enter the proxy by hand in Hermes' setup wizard, which offers a Custom Endpoint choice for "vLLM, SGLang, Ollama, or any OpenAI-compatible API":
Run the provider wizard
hermes model # interactive provider picker
# or: hermes setup — the full configuration wizard
Choose "Custom Endpoint" and enter the proxy
- Base URL:
http://localhost:9376/v1 - API key: anything non-empty — the proxy ignores it
Pick or type a model id from the network (see Picking a model).
Start a session
hermes --tui # or plain `hermes`
Troubleshooting
| Symptom | Fix |
|---|---|
connect says Hermes wasn't detected | Name it explicitly: zs-proxy connect hermes configures the named tool even without detection. |
--plugin says hermes is not on PATH | The config was still written. Install Hermes (or open a new shell so it is on your PATH), then run hermes plugins install zerosignal --enable. |
| The plugin is installed but ZeroSignal shows as not configured | Hermes found no ZEROSIGNAL_API_KEY. Run zs-proxy connect hermes to write it. |
| Hermes reaches the wrong port after you moved the proxy | With the plugin, the endpoint is ZEROSIGNAL_BASE_URL in your Hermes home's .env. Re-run zs-proxy connect hermes to update it. |
Hermes warns unknown config keys ignored: type | An older connect wrote that key. Re-run zs-proxy connect hermes; it removes it. |
| Hermes is using the wrong provider | Run hermes model and select it — listed as ZeroSignal with the plugin, as zerosignal without it. Or check that model.provider: zerosignal in config.yaml. |
| Connection refused / can't reach the endpoint | The proxy isn't running or the base URL is wrong. Confirm with curl http://localhost:9376/healthz and start it with zs-proxy proxy start. |
wallet_unfunded / payment errors | Add funds in the chat app, or with zs-proxy fund for a proxy-only wallet — see Wallet & funding. |
What's next
- Connecting AI tools — every
connectflag and the other supported tools. - Routing preferences — pin an operator or set a price ceiling.
- Pricing — what an agent turn costs.
- How-to guides — connect another app.