Skip to content
RU

Hermes Agent

Connect Hermes Agent to Mixen — pay from your balance in roubles, a self-improving TUI agent with any catalog model over our OpenAI-compatible API.

Hermes Agent is an open-source (MIT) agent from Nous Research: a terminal TUI, a built-in skills system (about 80 out of the box), persistent memory across projects, and notification channels — Telegram, Discord, and more. The model is whatever you like: an official provider, OpenRouter, or your own endpoint — Mixen connects via the latter.

Terminal window
# Linux / macOS / WSL2 / Termux
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Terminal window
# Windows (PowerShell)
iex (irm https://hermes-agent.nousresearch.com/install.ps1)

The installer brings its own dependencies: uv, Python 3.11, Node.js, ripgrep, ffmpeg, and a portable Git Bash. After it finishes, run source ~/.bashrc (or ~/.zshrc) and start hermes.

The config is ~/.hermes/config.yaml, secrets live in ~/.hermes/.env. The model section defines the provider, the model, and the endpoint:

model:
provider: openai
default: openai/gpt-5.6-sol
base_url: https://api.mixen.ai/v1
api_mode: chat_completions

The key goes into ~/.hermes/.env; Hermes documents OPENAI_API_KEY specifically for custom OpenAI-compatible endpoints:

Terminal window
OPENAI_API_KEY="your-api-key" # mxn-… from the Mixen dashboard

Key points:

  • base_url points at https://api.mixen.ai/v1 — with the suffix, as in the OpenAI SDK; api_mode: chat_completions is the /v1/chat/completions protocol.
  • default is the Mixen model ID, sent to the API as is; any from the catalog.
  • provider: openai — the name of the built-in provider whose key is read from OPENAI_API_KEY.

An alternative is a named provider on the Anthropic transport (handy when you keep several endpoints):

providers:
mixen:
api: https://api.mixen.ai # no /v1 — the transport appends the path
api_key: "your-api-key"
transport: anthropic_messages
models:
- anthropic/claude-sonnet-5
- z-ai/glm-5.3-flash
model:
provider: mixen
default: anthropic/claude-sonnet-5
Terminal window
hermes model # interactive picker: provider + model, written to config.yaml
hermes setup # full initial setup wizard

Inside a session — the slash command:

/model z-ai/glm-5.3-flash --provider openai # session-only
/model z-ai/glm-5.3-flash --provider openai --global # also persists to config.yaml
/model anthropic/claude-sonnet-5 --once # one turn, then reverts

The choice applies to new sessions — chat tabs already open keep their current model.

The key and balance are checked with a minimal generating request:

curl https://api.mixen.ai/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"z-ai/glm-5.3-flash","messages":[{"role":"user","content":"ping"}],"max_tokens":5}'

200 — the key and balance work; 401 — the key was copied incompletely or it is not a Mixen API key; 402 — the balance is empty. GET /v1/models does not check the key — it answers without one.

The agent carries a growing context (memory, skills, history), so input price is the main multiplier of the bill. Prices are per 1M tokens, input/output; full tables with cache columns — in the catalog.

Task Model Input / output
Routine: file review, simple questions, drafts GLM 5.3 Flash (z-ai/glm-5.3-flash) 8.4 / 27.9 ₽
Long tasks in familiar context GLM 5.3 (z-ai/glm-5.3) 156 / 490.2 ₽
Complex multi-step tasks GPT-5.6 Sol (openai/gpt-5.6-sol) 213.9 / 1069.5 ₽
  • Repeated context within 5 minutes is billed at ~10% of the input price (21.4 ₽ per 1M for gpt-5.6-sol instead of 213.9 ₽, 1.7 ₽ for glm-5.3-flash), and every hit extends the window by another 5 minutes — a dense session stays cached from start to finish.
  • A pause longer than 5 minutes resets the cache: the next turn pays the full input price, then the discount builds up again.
  • The agent’s persistent memory is exactly the kind of stable prefix that caches best; don’t edit rules or memory in the middle of an active task.
  • The limit is 60 RPM per key.
  • 401 / Invalid API Key — the key is incomplete or missing from ~/.hermes/.env, or a stale entry for another provider in the same file interferes with it (Hermes explicitly warns about stale .env values conflicting).
  • Settings don’t apply — a model switch affects new sessions: restart the current tab/session; hermes doctor runs a quick diagnostic.
  • Model not foundmodel.default must be a catalog ID (with the slash: openai/gpt-5.6-sol), and model.provider the provider name from your config.