Hermes Agent
Written for Hermes Agent 0.21.5 (tag v2026.9.24), from its documentation and source. Hermes talks to zdr.sh over Chat Completions, configured as a named OpenAI-compatible provider.
Configure#
Use a named provider in ~/.hermes/config.yaml, with the key in ~/.hermes/.env.
yaml
bash
That writes the key to ~/.hermes/.env and reads it only for api.zdr.sh. hermes chat starts with the default model; /model custom:zdr:glm-5.3 switches for the session, and --global persists the choice.
The parts that matter#
context_lengthis a plain integer, not"1M". Without it, detection falls back to a 256K default, which is wrong for every zdr.sh id.- Use
key_env, not an inlineapi_key. The environment variableCUSTOM_BASE_URLoutranksmodel.base_url, and an inline key would be sent wherever that variable points.key_envis released only when the endpoint matches. KeepCUSTOM_BASE_URLunset. - Transport.
transport: chat_completionsis explicit here. Chat Completions is the right protocol for every zdr.sh id. - Output. Hermes does not send an output cap; the model's default applies.
- Bare custom, if you prefer it.
provider: customis required for a remotebase_urlto be used at all, withcontext_lengthnext to it. - Keys and listing. The named provider avoids sending a key stored for another provider. A request without a usable key is answered
401.