Hermes Agent + minirouter
Draft custom-endpoint configuration for Hermes Agent, including running it on the Hermes models themselves.
Settings
~/.hermes/config.yaml, with the key in ~/.hermes/.env
In order
- Setup wizard → providerCustom OpenAI-compatible endpoint
- Base URLhttps://api.minirouter.sh/v1
The wizard asks for the OpenAI-compatible root. Paste it complete, including /v1.
- API keymr-live-… (your key)
Stored in ~/.hermes/.env, not inline in the config file.
- model.providercustom
- model.namenousresearch/hermes-4-70b
model:
provider: custom
base_url: https://api.minirouter.sh/v1
name: nousresearch/hermes-4-70b
# ~/.hermes/.env
# OPENAI_API_KEY=mr-live-YOUR-KEY-HEREDraft candidates · 4 models
All models →- Modelnousresearch/hermes-4-70bWhyThe model the agent is named for, served here as open weights.—
- Modelmeta/llama-3.3-70bWhyGeneral-purpose candidate for the turn loop.→
- Modelmistral/ministral-14bWhySmall, cheap candidate for routine turns.→
- Modelzai/glm-5WhyTool-calling candidate for multi-step chores.→
Only rows confirmed in the current live catalog are linked. A plain row is a draft recommendation, not a claim that the model is currently available. Paste ids exactly as written, author/name.
When it fails
- SymptomProvider loads but every model call 404sCodeinvalid_request
Paste https://api.minirouter.sh/v1 complete, including the /v1. These clients treat the base URL as the OpenAI-compatible root and append /chat/completions themselves, so trimming the /v1 leaves them calling a path that does not exist. docs/errors#invalid_request →
- SymptomSwitching back from a custom endpoint keeps failingCodeclient-side
A stale base URL left behind by the previous provider is the usual cause. Confirm base_url in ~/.hermes/config.yaml matches the provider you actually selected.
- SymptomCredits gone overnight with nothing to showCodeinsufficient_credits
An agent in a retry loop spends at machine speed. Set dailyLimitNano on the key the agent uses — one key per agent, so a runaway is contained to that key rather than the whole balance. docs/errors#insufficient_credits →
- Symptom401 on every requestCodeinvalid_api_key
Wrong or rotated key. Keys start with mr-live-; after a rotation the old key keeps working for 24 hours, then dies. docs/errors#invalid_api_key →
- SymptomResponse stops mid-sentence with a credits messageCodeinsufficient_credits
Balance hit $0 mid-stream. The stream ends with a terminal error naming the exact charge for tokens delivered — never a silent close. docs/errors#insufficient_credits →
Every API error string carries a URL resolving to /docs/errors.
Other always-on personal agents
Why this workload bills the way it does, what it costs to contain, and which models suit it: /use/personal-agents.