All plugins

zerosignal

ZeroSignal — private, pay-per-request inference through the local zs-proxy; no API key, your wallet is the credential.

TxnLab2Modelsv0.1.0Updated 1 month ago

hermes-zerosignal-provider

A Hermes Agent model-provider plugin for
ZeroSignal: a local proxy onto a pay-per-request, privacy-preserving
inference network. Your wallet is the credential, so there is no API key to manage.

With the plugin installed, ZeroSignal appears as a provider in hermes model and /model,
the picker lists the models the proxy currently serves, and Hermes' reasoning-effort setting
is forwarded to the network as reasoning_effort.

Prerequisites

The ZeroSignal proxy must be running and funded on the same machine:

zs-proxy proxy start
zs-proxy fund

See the ZeroSignal docs for
installing zs-proxy and for the other ways to point Hermes at the proxy.

Install

Once the plugin is listed in the Hermes plugin catalog:

hermes plugins install zerosignal

Until then, clone it into your Hermes home:

git clone https://github.com/TxnLab/hermes-zerosignal-provider \
  ~/.hermes/plugins/model-providers/zerosignal

Then give Hermes a key value so it treats the provider as configured. The proxy ignores the
Authorization header, so any non-empty value works. Add to ~/.hermes/.env:

ZEROSIGNAL_API_KEY=zerosignal-local

Run hermes model, pick ZeroSignal, and choose a model.

Configuration

| Variable | Purpose |
| --- | --- |
| ZEROSIGNAL_API_KEY | Required by Hermes, ignored by the proxy. Any non-empty value. |
| ZEROSIGNAL_BASE_URL | Optional. Set it if the proxy listens somewhere other than http://127.0.0.1:9376/v1. |

The Hermes reasoning effort (agent.reasoning_effort in config.yaml, or --reasoning on
the command line) is sent to the proxy as a top-level reasoning_effort. Serving nodes
reject levels outside what they declare, so the plugin clamps the requested level onto the
model's allowed_efforts from the proxy's /v1/models catalog, never upward (Hermes'
default medium becomes low on a node that declares low/high/max). Models the catalog
does not describe get the request as-is.

Development

The plugin is validated and tested against one pinned hermes-agent commit, recorded as
hermes_ref under [tool.hermes-zerosignal-provider] in pyproject.toml. Hermes does not
build wheels outside Nix, so install it editable from a checkout at that commit:

python3.11 -m venv .venv && . .venv/bin/activate
ref="$(python -c 'import tomllib; print(tomllib.load(open("pyproject.toml","rb"))["tool"]["hermes-zerosignal-provider"]["hermes_ref"])')"
git clone https://github.com/NousResearch/hermes-agent hermes-agent-src && git -C hermes-agent-src checkout "$ref"
pip install -e ./hermes-agent-src
pip install -e ".[dev]"

hermes plugins validate .    # the catalog admission check
pytest

.github/workflows/validate.yml runs the same steps. To move to a newer Hermes, bump
hermes_ref, re-run both, and mention the upstream commit range in the commit message.

License

MIT. See LICENSE.

README from the reviewed commit ce1ba1f; it updates when the author re-pins.