New request
#3412: enhancement: MiniMax-M3 missing from model switcher — make MiniMax catalog auto-refresh via models.dev instead of hand-maintained static lists
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Summary
MiniMax released MiniMax-M3 on 2026-06-01. A user (Deor, via Discord) can't find it in the model switcher and hit a "connection error" trying to use it as their main model. Root cause: the WebUI's MiniMax catalog is hand-maintained static lists that have to be edited for every MiniMax release. The broader fix is to let Hermes pick new MiniMax models up automatically (the same way it already does for DeepSeek/Z.AI/Mistral/etc. via models.dev), instead of us patching a static list each time.
hey quick question regarding new released model minimax-m3, currently I can't find it on the model switcher, is it expected and I should wait for an update or no? because it says connection error while I use MiniMax-M3 from minimax provider as main model — Deor
Investigation (verified against master @ 4baa26b, running v0.51.210 + bundled hermes-agent)
There are two independent freshness layers for MiniMax, and both are manual:
1. WebUI static catalog — api/config.py
- Dropdown registry,
:682-683— onlyMiniMax-M2.7+MiniMax-M2.7-highspeed. - Per-provider static list
STATIC_PROVIDER_MODELS["minimax"],:1109-1115—M2.7 / M2.7-highspeed / M2.5 / M2.5-highspeed / M2.1. No M3. minimax-cn,:1116-1121—M2.7 / M2.5 / M2.1 / M2. No M3.
2. hermes-agent catalog — hermes_cli/models.py
_PROVIDER_MODELS["minimax"](:297) does listMiniMax-M3in the current bundled agent, which is why on this box/api/models/live?provider=minimaxalready returns M3 and the dropdown gets enriched. But that's still a hand-edited static list — a user on an older bundled agent won't have it.
Why "I can't find it" + the live-enrichment gap
The WebUI shows the static list immediately, then background-enriches via _fetchLiveModels() → /api/models/live → agent provider_model_ids("minimax") (static/ui.js:1289,1364; api/routes.py:_handle_live_models). MiniMax is explicitly documented as a static-only, no live /models discovery provider (api/routes.py:9299). So M3 only appears for a user if the bundled agent's curated list already has it. If their agent predates the M3 entry, the switcher never shows M3 — exactly Deor's report.
The real lever — models.dev auto-pickup (what Nathan asked for)
models.dev already carries MiniMax-M3:
list_agentic_models("minimax") -> ['MiniMax-M2.5','MiniMax-M3','MiniMax-M2.5-highspeed','MiniMax-M2.7','MiniMax-M2','MiniMax-M2.7-highspeed','MiniMax-M2.1']
list_agentic_models("minimax-cn") -> (same, includes MiniMax-M3)
But minimax/minimax-cn are NOT in the agent's _MODELS_DEV_PREFERRED set (hermes_cli/models.py:1971-1987 — has deepseek, zai, mistral, groq, gemini, etc., but no minimax). So the agent never merges models.dev for MiniMax and relies purely on the hand-curated list. Adding minimax to that set is what makes new M-series models surface automatically with no Hermes/agent release — the exact "Hermes adds it rather than us adding it manually every release" outcome.
Proposed fix — two layers
Phase A — WebUI (immediate, this repo)
Add the missing entries to api/config.py so M3 is selectable even when live enrichment is unavailable (older agent, offline, CI):
- Dropdown registry
:682— addminimax/MiniMax-M3(+MiniMax-M3-highspeedif it exists). STATIC_PROVIDER_MODELS["minimax"]:1109and["minimax-cn"]:1116— prependMiniMax-M3.
Small, ~5-line change + a regression test asserting MiniMax-M3 is in both static lists.
Phase B — hermes-agent (strategic, the durable fix)
Add "minimax" and "minimax-cn" to _MODELS_DEV_PREFERRED in hermes_cli/models.py. Then provider_model_ids() merges fresh models.dev entries on top of the curated fallback (curated kept for offline/CI), and future MiniMax model releases appear automatically — no per-release manual edit on either side. WebUI inherits this for free via the existing live-enrichment path. (Tracked here for visibility; the change lands in hermes-agent.)
Note: MiniMax has no standard
/v1/modelsdiscovery endpoint (the/anthropicinference base doesn't list models), which is why models.dev — not a live provider fetch — is the right freshness source here.
On the "connection error"
On this box, selecting MiniMax-M3 works (live list returns it). Deor's connection error is most likely one of: (a) M3 access not yet enabled on his MiniMax key/tier (model launched 2026-06-01, may be gated), or (b) his bundled agent's catalog lacks M3 so the ID never validated. Worth confirming his WebUI + agent version and the exact error before treating it as a separate runtime bug — flagging it here so it isn't lost, but the catalog/auto-pickup work above is the headline.
Scope
- Phase A:
api/config.py(~5 LOC) + 1 regression test — front-end catalog only. - Phase B:
hermes-agent/hermes_cli/models.py(2-line set addition) — separate repo, durable auto-pickup.
Reported by
Deor (Discord #testers-talk), forwarded by Nathan.
Replacing static MiniMax model lists with dynamic auto-refresh touches catalog config, models endpoint, and frontend switcher.
- api/config.py
- api/routes.py
- static/js/modelSwitcher.js
- tests/test_models.py