Skip to main content

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.

Install Hermes​

Skip this if you already have it.

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

(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.

info

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​

SymptomFix
connect says Hermes wasn't detectedName it explicitly: zs-proxy connect hermes configures the named tool even without detection.
--plugin says hermes is not on PATHThe 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 configuredHermes found no ZEROSIGNAL_API_KEY. Run zs-proxy connect hermes to write it.
Hermes reaches the wrong port after you moved the proxyWith 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: typeAn older connect wrote that key. Re-run zs-proxy connect hermes; it removes it.
Hermes is using the wrong providerRun 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 endpointThe 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 errorsAdd funds in the chat app, or with zs-proxy fund for a proxy-only wallet — see Wallet & funding.

What's next​