witcheer's Wingtips for Hermes Agent

Every Hermes Agent tip from witcheer at Nous Research, in his own words. Collected in one place and updated daily.

Official tips from witcheer at Nous Research · Follow @witcheer · Full collection

witcheer says each tip ran on a real Hermes box before it shipped. Hermes changes fast, so check your version and the linked doc.

witcheer

Latest tip #113 · switch projects from the chat · Oct 29, 2026

Wingtips

18 of 113 entries

Reset filters
  1. #75 · reasoning_effort for side tasks, how hard each background call thinks

    · Models, providers & cost · CLI / Desktop / Gateway

    besides your chat, Hermes Agent makes small model calls of its own: the summary written when a long conversation is compacted, the name it gives a session, reading an image you paste, the check on whether a command needs your approval.

    Show full tip

    those calls run on your main model unless you gave them another one, at the provider's default thinking level.

    but a session title does not need deep thinking.

    each side task has its own reasoning_effort. set it to low or none for that task and the call comes back sooner and costs less, while your chat keeps the level you set for it.

    # in ~/.hermes/config.yaml  (or: hermes config set auxiliary.<task>.reasoning_effort low)
    auxiliary:
      compression:
        reasoning_effort: low
      title_generation:
        reasoning_effort: none
      vision:
        reasoning_effort: none
    

    levels: none, minimal, low, medium, high, xhigh, max, ultra. not set by default (the provider's default level). same knob on approval, curator, triage_specifier, kanban_decomposer, goal_judge and the other side tasks; your chat keeps its own agent.reasoning_effort. MoA slots set depth in the preset, and a background review that stays on your main model ignores this key.

    docs: https://hermes-agent.nousresearch.com/docs/user-guide/configuration#the-universal-config-pattern

  2. #74 · provider_routing, pick which host serves your model on OpenRouter

    · Models, providers & cost · CLI / Desktop / Gateway

    on OpenRouter, one model name is served by several hosts, and OpenRouter picks the host for each request.

    Show full tip

    but what if one of those hosts is rate-limiting you today?

    provider_routing in config.yaml lets you choose.

    list a host under ignore and your requests for that model stop going there, even when it is the cheapest one. the other hosts keep serving as before.

    on Nous Portal you can skip this step: the Portal picks the host for every model on your behalf, so there is nothing to set.

    # in ~/.hermes/config.yaml (OpenRouter setups)
    provider_routing:
      ignore:
        - "<provider slug>"   # the lowercase slug OpenRouter shows for that host
    

    same key, other lists: only: (allow these hosts) and order: (try these first). read at startup, so restart hermes or the gateway after the edit. list values: edit config.yaml directly, not hermes config set. one model only? put the same lists under models: for that model id.

    docs: provider routing

  3. #62 · cron.model

    · Models, providers & cost · CLI / Gateway

    Hermes Wingtips #62: cron.model

    your scheduled jobs and your chat sessions do not have to share a model. without a cron setting, a new job runs on your global default, the same model you chat with, even when the task is a small daily digest.

    two ways to route cron spend:

    (1) hermes config set cron.model \<model\>

    a fleet default: every job without its own pin runs on this model.

    (2) hermes cron edit \<job_id\> --model \<model\> --provider \<provider\>

    a per-job pin, for when one heavy scheduled analysis deserves the big model while the rest run cheap.

    super useful if you run digests, watchers or reminder jobs 24/7: keep the flagship for conversations and let a smaller model do the routine rounds!

  4. #59 · a rate limit doesn't have to stop your session

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #59: a rate limit doesn't have to stop your session

    Hermes Agent can carry a fallback chain: backup provider:model pairs it switches to automatically when your main model hits a rate limit, a server error or an auth failure.

    ~ hermes fallback

    opens the same picker as hermes model. add as many backups as you want, they are tried in order.

    history, tool calls and context all carry over, the agent continues from where it stopped. and it's per turn, your next message starts back on your primary.

    one last tips: pin a local model last and no provider outage can fully stop you!

  5. #56 · switching models from anywhere

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #56: switching models from anywhere

    hermes model opens an interactive picker, so it refuses to run through a pipe, a script, or another agent's terminal tool.

    the fix is that you never needed the picker. in any chat, on any platform:

    /model grok-4 --provider x-ai --global

    --global persists it to config.yaml and switches the running session in the same move.

    --once is the sibling: it switches for a single turn and restores the previous model afterward, even on an error.

  6. #48 · platform toolsets

    · Models, providers & cost · CLI / Gateway

    Hermes Wingtips #48: platform toolsets

    your agent pays a fixed token overhead before it reads a single word of your message, and one of the biggest slice is not the prompt.

    every tool your platform loads ships its full schema with every call, used or not.

    if a session never touches the browser, image gen or TTS, platform_toolsets in config.yaml hands that platform a smaller set.

    hermes prompt-size shows you the before and after without spending a token.

  7. #42 · the compaction-summary model

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #42: the compaction-summary model

    every time your context compacts, a model reads the whole transcript and writes the summary. by default that model is your main chat model.

    if you run a frontier model, you are paying frontier price for housekeeping, and the pause you feel at every compaction is frontier latency too.

    you can move that job to a fast, cheap model. below, the switch on my own agent:

  8. #39 · the missing provider prefix

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #39: the missing provider prefix

    if a model id ever answers you with a 404 error, check the id before you check your keys.

    providers know their models as vendor/model, and an id that lost its prefix (nemotron-3-ultra-550b-a55b instead of nvidia/nemotron-3-ultra-550b-a55b) returns a 404, so it reads like an outage.

    a fix just merged for the next release: the error now names the model and suggests the prefixed id.

    until then, the habit to keep in mind: vendor/model, always, and hermes model picks it correctly for you.

  9. #32 · hermes insights

    · Models, providers & cost · CLI

    Hermes Wingtips #32: hermes insights

    this command reads your local session database and prints the last 30 days:

    • input and output tokens
    • which models did the work
    • which platforms your sessions came from
    • your top tools by call count...

    --days moves the window and --source narrows to one platform.

    this is a useful command when you are deciding which model to demote, or when you just want to know which tool your agent leans on most!

    as an example, here is one of my Hermes Agent:

  10. #31 · see what every message costs before you send it

    · Models, providers & cost · CLI

    Hermes Wingtips #31: see what every message costs before you send it

    hermes prompt-size

    it prints the fixed budget of a fresh session: the full system prompt, the skills index, your MEMORY.md and USER.md snapshots, the prompt tiers, and the JSON schemas for every enabled tool.

    if you want to manage it:

    • hermes tools turns off toolsets you never use
    • hermes skills uninstalls what you don't need
    • AGENTS.md in your working directory count towards the total too
  11. #29 · local models context floor

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #29: local models context floor

    you point Hermes Agent at Ollama, the first few turns are fine, then the agent starts forgetting instructions or repeating work.

    the usual cause is that Ollama's default context depends on your VRAM, and under 24 GB it is 4,096 tokens. Hermes needs at least 64,000 for agent work, because the system prompt and tool schemas alone take 4k to 8k, and most servers drop your oldest messages once the window fills.

    here is what to do server-side:

    (1) Ollama: OLLAMA_CONTEXT_LENGTH=64000 ollama serve, then check the CONTEXT column in ollama ps

    (2) vLLM: --max-model-len 64000

    (3) llama.cpp: llama-server -m model.gguf -c 64000

    LM Studio users can skip this since Hermes asks it to load the model at 64K by default.

  12. #26 · every web page your agent reads costs a main-model call

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #26: every web page your agent reads costs a main-model call

    web_extract is the tool Hermes agent uses to read web pages. by default the summariser that processes long pages reuses your main chat model.

    it means that on every docs page, article, thread... the agent opens burns a full-price call to whatever model you're chatting with.

    (1) route the summariser to a cheap model:

    auxiliary:
      web_extract:
        provider: nous
        model: google/gemini-3-flash-preview
    

    or pick it interactively: hermes model → configure auxiliary models → web_extract.

    (2) if you need raw unsummarised content later, use browser_navigate & browser_snapshot instead.

    the browser tool returns a live page without auxiliary-model rewriting.

  13. #23 · pointed Hermes at your own model and it prints the tool call instead of running it?

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #23: pointed Hermes at your own model and it prints the tool call instead of running it?

    if the reply comes back as raw json like {"name": "web_search", ...}, your inference server handed the tool call over as text and Hermes never got to run it.

    tool calling has to be switched on at the server, and it is off until you set it:

    (1) vLLM: add --enable-auto-tool-choice --tool-call-parser hermes

    (2) SGLang: add --tool-call-parser qwen (or your model's parser)

    (3) llama.cpp: add --jinja

  14. #21 · credential pools

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #21: credential pools

    a credential pool is several keys or logins for one provider. Hermes picks a healthy key, and when that key is rate-limited or out of quota it rotates to the next one.

    (this is different from fallback providers. a fallback jumps to a different provider, and only after every key in the pool is exhausted).

    (1) add a second key (OpenRouter example):

    hermes auth add openrouter --api-key sk-or-...-key

    (2) check the pool: hermes auth list

    when Hermes does rotate, the new key has no cached prefix for your chat, so the next request re-reads the full history.

    lastly, if you are on Nous Portal with a single OAuth login, you usually do not need a pool. this tip is for multi-key API setups.

  15. #14 · switching models resets your prompt cache

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #14: switching models resets your prompt cache

    switch models mid-conversation and the next turn re-reads the whole thing at full input price. the cache key includes the model, so a new model means a cold cache. occasional switches are fine, frequent ones in a long session multiply your cost.

    • batch your switches instead of ping-ponging mid-thread
    • on a long session, start a fresh one or delegate (subagents get their own context) rather than switching back and forth
  16. #10 · every fallback entry needs both provider and model

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #10: every fallback entry needs both provider and model

    your fallback_providers list in ~/.hermes/config.yaml counts an entry as a real fallback only when it carries a provider field and a model field.

    two things worth setting:

    (1) write provider and model on every entry in the chain, top to bottom.

    (2) put a local model last as your floor for a cloud outage, pointing provider: custom at your own llama.cpp or vLLM endpoint.

  17. #8 · MoA

    · Models, providers & cost · CLI / Desktop / Gateway

    Hermes Wingtips #8: MoA

    Show full tip

    the new Mixture of Agents virtual model fans every turn out to four reference models plus an aggregator.

    I put it on a fresh Hermes box: gpt-5.5, deepseek-v4-pro and sonnet-4.6 as references, opus-4.8 as the aggregator.

    measured on the box:

    • a single opus call ran 27.9k tokens for ~$0.14
    • the full MoA turn ran 28.6k tokens for ~$0.15, the same within a cent

    the system prompt and tool schemas dominate that number, and the references run on stripped context, so the four extra calls stay cheap. for one question, you get the whole ensemble for barely more than a single model.

    and the quality is the point: Nous's HermesBench puts an opus + gpt-5.5 MoA at 0.8202 vs 0.7607 / 0.7412 for those models alone.

    it is 5 calls a turn, so it scales with task length, which is exactly why Nous frames it for "genuinely difficult problems" and on that ground it's one of the better-value things they've shipped.

All tips are written by witcheer and collected here with credit. Card images stay on his X posts.