AgentsOpen SourceFreeActiveMachine-verified· beginner · ~5 min setup

Hermes on MiMo-V2.5: a 1M-context agent for pennies

Set MiMo-V2.5 as your everyday Hermes model: 1M context at $0.14/$0.28 per 1M tokens, with tool-use enforcement on for a non-GPT model.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 2/2 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone who wants a cheap, capable default model for general Hermes agent work. CI validates that config.yaml parses and points Hermes at openrouter + xiaomi/mimo-v2.5 with tool_use_enforcement on (MiMo is not on Hermes' auto-enforce list, so you set it yourself). No API key, no model call. The actual conversation is a model step and is fenced.

Not for

  • Tasks that need a frontier model's reasoning, this is the cheap-but-capable tier
  • Expecting CI to judge MiMo's output quality, that is the fenced model step

The Stack

Tested Against

hermes-agent docs (2026-06)openrouter xiaomi/mimo-v2.5ruby@3.x (YAML stdlib)

Side effects & data flow

Network
none, local only
Writes
./config.yaml
Credentials
none required

Prerequisites

  • Hermes Agent installed
  • An OpenRouter API key (only to actually run the agent)

Steps

  1. 1

    Point Hermes at MiMo-V2.5 and validate the config

    Write ~/.hermes/config.yaml so model.provider is openrouter and model.model is the xiaomi/mimo-v2.5 slug. MiMo is not on Hermes' tool-use auto-enforce list (gpt/codex/gemini/gemma/grok), so turn tool_use_enforcement on if it narrates instead of calling tools. CI loads this exact YAML with a real parser and asserts the slug, no key.

    cat > config.yaml <<'YAML'
    model:
      provider: openrouter
      model: xiaomi/mimo-v2.5
    agent:
      tool_use_enforcement: true
    YAML
    ruby -ryaml -e '
    c = YAML.load_file("config.yaml")
    m = c["model"] || {}
    abort "BAD: provider not openrouter" unless m["provider"] == "openrouter"
    abort "BAD: model not xiaomi/mimo-v2.5" unless m["model"] == "xiaomi/mimo-v2.5"
    puts "config OK: openrouter -> xiaomi/mimo-v2.5 (config.yaml parses)"
    '
  2. 2

    Run the agent (the model step, not checked by CI)

    Set OPENROUTER_API_KEY in ~/.hermes/.env and start Hermes. The conversation itself runs MiMo and costs per-token, so CI never claims it.

Eval, 2 fixtures

Last passed: verified today
  • config-okcontainstimeout 30s · max $0

    Expected: config OK: openrouter -> xiaomi/mimo-v2.5 (config.yaml parses)

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 0

Results

MiMo-V2.5 scores ~49 on Artificial Analysis' Intelligence Index at $0.14 in / $0.28 out per 1M tokens (OpenRouter) with a 1M-token window: about as cheap as a capable default gets.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).