Agent guide · rapid-mlx 0.12.18 · ← Back to README

Hermes Agent

Hermes Agent is Nous Research's agent runtime, tuned for the Hermes / Qwen tool format. It injects a large system prompt with ~60+ tools, so a long context window is a hard prerequisite.

TIER-1 AGENT   Wire: /v1/chat/completions · Setup: rapid-mlx agents hermes --setup · Matrix cell: ✅ ✅ XFAIL(arch) ✅ (DeepSeek R1-Distill — see XFAIL arch).
Re-verified 2026-08-01 — a wire smoke on the running server, on rapid-mlx 0.11.5, Qwen 3.5-9B-4bit on an M2 Pro Mac mini (32 GB) — Qwen family only; the other three families were not re-run in this pass.

Install

$ pip install hermes-agent
# If the pip build fails on your platform, clone and install from source in a venv:
#   git clone https://github.com/NousResearch/hermes-agent && cd hermes-agent
#   python -m venv .venv && .venv/bin/pip install -e .

Config

One-shot: rapid-mlx agents hermes --setup writes ~/.hermes/config.yaml, auto-detecting your served model's real context window. A representative template (context_length shown for a 256K-window model):

# ~/.hermes/config.yaml
model:
  provider: "custom"
  default: "default"
  base_url: "http://localhost:8000/v1"
  context_length: 262144
  max_tokens: 4096
platform_toolsets:
  cli: [terminal, file, code_execution, web, browser, skills]

Run

$ rapid-mlx serve qwen3.5-9b-4bit
$ hermes chat

Recommended aliases (per rapid-mlx agents hermes): qwen3.5-4b-4bit, qwen3.5-9b-4bit, gemma-4-26b-4bit, qwen3.5-35b-4bit, qwen3.6-35b-4bit.

Integration harness (test_hermes.py)

The deep flow at tests/integrations/test_hermes.py writes ~/.hermes/config.yaml to point at the running server, then drives hermes chat -q <query> -Q in non-interactive mode. Because Hermes injects 60+ tools into every turn, small models can run out of context — the harness treats "context too small for the tool block" as SKIP, not FAIL.

Gotchas

Empirical

The hermes-agent row of the integration matrix is ✅ on Qwen 3.6, Gemma 4, and gpt-oss; DeepSeek R1-Distill XFAIL(arch). Deep flow assertions in test_hermes.py cover plain, streaming, single tool, multi-tool, and structured output.

See also