guide · ai

Hermes Agent Provider: MiniMax M3 (Direct, Not Via OpenRouter)

Wiring MiniMax M3 as a Hermes provider: API key from MiniMax / MiniMax API, the literal model string MiniMax-M3, direct access (not via OpenRouter), and the live senior-dev profile today.

July 14, 2026 · By Alastair Fraser

A retro robot at a wiring station with a small keychain tagged MINIMAX M3 API KEY, plugging the cable directly into a HERMES CLIENT port — no router box in between — and pointing at a sign that reads DIRECT, NOT VIA OPENROUTER.

Why MiniMax direct

This guide documents the working setup for MiniMax’s M3 model class on the operator’s VPS as of 2026-07-14. Two important notes:

  1. Direct, not via OpenRouter. OpenRouter can route to MiniMax at a per-token markup. The operator has explicitly stopped using the OpenRouter path for MiniMax M3 access — direct provider calls are preferred for cost and latency.
  2. The model string is literal: MiniMax-M3. Not minimax-m3, not M3, not minimax/MiniMax-M3. The exact string is sensitive to case and dash.

The setup is one of the cheapest. Four lines, no browser OAuth, no key rotation.

The 4-line setup

  1. Get an API key at https://api.MiniMax.chat/ (sign up, set billing, generate a key).
  2. export MINIMAX_API_KEY=<key> in the env.
  3. hermes config set provider.minimax.api_key "$MINIMAX_API_KEY" (lower-case provider name in the config; only the model string is upper-case M3).
  4. hermes config set provider.minimax.default_model "MiniMax-M3" and verify with hermes chat --provider minimax -q "Reply with OK".

Lower-case minimax in hermes config set provider.<name> is the canonical identifier. The upper-case MiniMax-M3 in the model field is the canonical model string.

Step-by-step breakdown

1. Get the key. https://api.MiniMax.chat/ — sign up with email, verify, set a billing method (credit card or prepaid credit), and create a new API key. Copy it once into a password manager; MiniMax only shows the full key on creation. The dashboard exposes per-key usage after the first request lands.

2. Export it. export MINIMAX_API_KEY=<key> in the shell that will run Hermes. For a long-lived daemon or cron, put the export in /etc/environment or the supervisor’s env file so it survives reboots. A key stuck in ~/.bash_history but not exported is the most common cause of “401 invalid key” on a fresh shell.

3. Wire it to Hermes. hermes config set provider.minimax.api_key "$MINIMAX_API_KEY". The provider identifier is minimax (lowercase); the model identifier is MiniMax-M3 (uppercase M, dash, not slash). Conflating the two is the second most common failure mode.

4. Pin the model and verify. hermes config set provider.minimax.default_model "MiniMax-M3" then hermes chat --provider minimax -q "Reply with OK". The reply should be a single line — anything longer means the key works but a different model answered.

The model-pin rule

The model is MiniMax-M3 exactly. Different names that look similar:

  • minimax-m3 — wrong case; fails.
  • MiniMax/M3 — wrong slash; this is an OpenRouter alias, not a direct-MiniMax model.
  • MiniMax-M3 — correct. Direct MiniMax.
# Correct
hermes config set provider.minimax.default_model "MiniMax-M3"
hermes chat --provider minimax --model MiniMax-M3 -q "Reply with OK"

# Don't
hermes config set provider.minimax.default_model "minimax-m3"  # wrong case
hermes config set provider.minimax.default_model "MiniMax/M3"  # wrong, this is OpenRouter

If the response fails, the failure is usually step 1 (key not exported) or the model-name case/slash mismatch.

Why not OpenRouter

The OpenRouter-vs-direct choice has a real cost impact. OpenRouter adds ~5% margin on top of direct provider pricing. For a high-volume install, that’s a real number per month.

Three reasons to prefer direct:

  1. Cost. Direct is cheaper.
  2. Latency. Direct is roughly 10% faster (no aggregator hop).
  3. Privacy. The request goes to MiniMax’s servers, not through an intermediate aggregator.

The only reason to use OpenRouter for MiniMax is to fall back to a different model in the same credential. If you don’t need that, stay direct.

What the operator’s install does today

Today on this VPS, the senior-dev profile uses MiniMax as the primary provider. The full fallback chain in /opt/hermes/config.yaml is:

provider_fallback:
  - minimax       # direct MiniMax M3
  - openai        # gpt-5 / gpt-5-mini
  - openrouter    # aggregator (last resort)
  - ollama_local  # local

The operator never hits OpenRouter for MiniMax access; OpenRouter’s slot is reserved for models that need aggregator routing. If MiniMax returns a 5xx (server error), the chain falls to OpenAI’s gpt-5; if OpenAI is also degraded, OpenRouter picks up the slack with whatever’s in stock. The local Ollama slot at the end of the chain is the network-disconnected fallback — when every public-API is unreachable, Ollama picks the work up with whatever local model was pinned at last config-set.

The MiniMax-specific quirks

Three details that don’t apply to other providers on Hermes:

  1. The model string is the only accepted alias. MiniMax-M3 resolves; MiniMax/M3 does not. If you want to pin a MiniMax model via OpenRouter, use the OpenRouter alias — but you’re paying for it.
  2. Token usage reports back in a different field name from Anthropic and OpenAI. Hermes’s logging normalizes it, but raw responses carry output_tokens_count rather than output_tokens. If you write custom logging, account for the field-name difference.
  3. Cross-region routing is automatic. MiniMax’s servers route across regions for latency. You don’t need to set a region; it picks. This is invisible to the operator — until one region has an outage and the latency spikes; that’s when “automatic” starts costing you.

These quirks don’t change the 4-line setup; they affect the verification surface (the usage block format) and the latency-observation habit.

What not to do

  • Don’t use minimax-m3 (wrong case) or MiniMax/M3 (wrong namespace).
  • Don’t put OpenRouter-routed MiniMax first in the fallback chain when the operator wants direct. Cost adds up.
  • Don’t share API keys across operators without rotating quarterly.
  • Don’t trust the dashboard usage display for budget-gating — same hourly-sample trap as Anthropic and OpenAI.

Verification checklist

#CommandWhat it proves
1hermes config show --provider minimaxProvider configured
2hermes chat --provider minimax -q "Reply with OK"API key valid
3hermes chat --provider minimax --model MiniMax-M3 -q "Reply with OK"Model pin resolves
4MINIMAX_API_KEY is exported (not just in shell history)Key live this session
5provider_fallback[0] is minimax (direct, not OpenRouter)Direct path configured

Sources

Last verified: 2026-07-14 against Hermes v0.18.2 (2026.7.7.2) on the senior-dev profile. Live model: MiniMax-M3.

Sources

#minimax#M3#provider#direct

Submit a take

Have a different read on this? Drop a comment below — your email isn't published, and I read every one. Nothing leaves the site until I approve it.

Your email address will not be published. Required fields are marked.