← Back to blog

Hermes Auxiliary Models: Stop Paying Opus Prices for Summaries

hermesauxiliary-modelscost-optimizationconfigurationopus
Hermes Auxiliary Models: Stop Paying Opus Prices for Summaries

Hermes Agent runs 11 background tasks that don't need a reasoning model: context compression, image analysis, web page summarization, session title generation, command approval classification, MCP tool routing, skill search, and several others. By default, every one of these uses your main model -- the same model that handles your actual conversations and reasoning.

If you pay for Claude Opus, MiniMax M2.7, or another expensive reasoning model, this means your context-compression summaries burn the same cost-per-token as your most demanding analytical work.

The fix is already in your ~/.hermes/config.yaml. It's the auxiliary block.

What gets offloaded

Hermes defines 11 auxiliary task slots. Each one can be configured independently with its own provider, model, timeout, fallback chain, and reasoning effort.

Task What it does Default behavior
compression Summarizes old messages when context fills up Main model
vision Analyzes images from vision_analyze and browser screenshots Main model
web_extract Summarizes web pages fetched by web_extract Main model
title_generation Auto-generates session titles Gemini Flash (already overridden by default)
approval Classifies command risk for smart approval mode Main model
skills_hub Semantic skill matching and search Main model
mcp Routes tool calls to MCP servers Main model
triage_specifier Expands one-liner Kanban tasks into specs Main model
kanban_decomposer Breaks down Kanban tasks into subtasks Main model
tts_audio_tags Inserts Gemini 3.1 TTS hidden audio tags Main model
profile_describer Generates profile descriptions for messaging Main model

The Hermes docs are explicit about when to override:

"Compression -- When you're burning reasoning tokens on Opus/M2.7 just to summarize context. A fast chat model does the job at 1/50th the cost."

A typical Claude Opus 4.7 request costs roughly 50x what a Gemini Flash request costs per token. Summarizing a long conversation for context compression involves processing tens of thousands of tokens. That difference compounds across every session.

Configuration

Two approaches. The interactive method:

hermes model
# Select "Configure auxiliary models"
# Check the tasks you want to override
# Pick a model -- Gemini Flash, GPT-4o-mini, Haiku

Or edit ~/.hermes/config.yaml directly:

auxiliary:
  compression:
    provider: openrouter
    model: google/gemini-3-flash-preview
  vision:
    provider: openrouter
    model: google/gemini-2.5-flash
  web_extract:
    provider: openrouter
    model: google/gemini-3-flash-preview
  approval:
    provider: openrouter
    model: anthropic/claude-3.5-haiku

To assign one flash model to every auxiliary slot at once:

curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-Hermes-Session-Token: $TOKEN" \
  -d '{"scope":"auxiliary","task":"","provider":"openrouter","model":"google/gemini-3-flash-preview"}' \
  http://localhost:PORT/api/model/set

Per-task reasoning effort

Each auxiliary slot accepts a reasoning_effort parameter independent of your main model's setting. If you run Opus with reasoning_effort: high, your compression and vision tasks inherit that -- unless you override:

auxiliary:
  compression:
    provider: openrouter
    model: google/gemini-3-flash-preview
    reasoning_effort: none
  vision:
    provider: openrouter
    model: google/gemini-2.5-flash
    reasoning_effort: low

Setting none or low for summarization tasks avoids burning reasoning tokens on jobs that output one or two paragraphs.

Fallback chains

Each auxiliary task supports its own fallback chain. If the primary model rate-limits or fails, Hermes walks the chain:

auxiliary:
  compression:
    provider: openrouter
    model: openai/gpt-4o-mini
    fallback_chain:
      - provider: nous
        model: deepseek/deepseek-chat
      - provider: openrouter
        model: google/gemini-3-flash-preview

When auto is the provider, Hermes uses the main model but falls back through the top-level fallback_providers chain, then a built-in auxiliary discovery chain. Adding an explicit fallback_chain to a specific task overrides that sequence for that task only.

When the main model makes sense

Not every task benefits from a cheaper model. If your main model is already a flash-tier model (Gemini Flash, GPT-4o-mini, DeepSeek Chat), the savings from overriding auxiliary slots are marginal. The Hermes docs specifically flag approval as a case where a cheap model is always the right call -- it does binary classification and doesn't need reasoning depth -- but a $0.10/M flash main model negates the need for overrides on most auxiliary slots.

The largest savings come when your main model is an expensive reasoning model and your agent runs long sessions with frequent compression, heavy web extract usage, or many vision calls.

Where this fits

This isn't a new feature -- the auxiliary model system has been in Hermes for multiple releases. The recent discussion on X reflects a shift in community understanding: power users moving from "everything on Opus" to deliberately routing side tasks. The token-diet CLI (covered yesterday) addresses the "how much context am I burning" question. Auxiliary model configuration addresses the "how much am I paying per context" question. Together they form a two-layer cost optimization: reduce the tokens sent, then reduce the cost of the tokens that remain.

[^1]: Hermes Agent. "Configuring Models." Hermes Agent Documentation. [^2]: Hermes Agent. "Web Search & Extract." Hermes Agent Documentation. [^3]: Hermes Agent. "Configuration." Hermes Agent Documentation.

Termagotchi
_

Ryan Underdown

Autodidact. Rarely listens to advice.

Follow on X @catamarammed or GitHub @underdown