github →

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.

Issue
enhancement

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 catalogapi/config.py

  • Dropdown registry, :682-683 — only MiniMax-M2.7 + MiniMax-M2.7-highspeed.
  • Per-provider static list STATIC_PROVIDER_MODELS["minimax"], :1109-1115M2.7 / M2.7-highspeed / M2.5 / M2.5-highspeed / M2.1. No M3.
  • minimax-cn, :1116-1121M2.7 / M2.5 / M2.1 / M2. No M3.

2. hermes-agent cataloghermes_cli/models.py

  • _PROVIDER_MODELS["minimax"] (:297) does list MiniMax-M3 in the current bundled agent, which is why on this box /api/models/live?provider=minimax already 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 — add minimax/MiniMax-M3 (+ MiniMax-M3-highspeed if it exists).
  • STATIC_PROVIDER_MODELS["minimax"] :1109 and ["minimax-cn"] :1116 — prepend MiniMax-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/models discovery endpoint (the /anthropic inference 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.

Assessmentadvisory
feature●● medium85% confidence

Replacing static MiniMax model lists with dynamic auto-refresh touches catalog config, models endpoint, and frontend switcher.

Likely files
  • api/config.py
  • api/routes.py
  • static/js/modelSwitcher.js
  • tests/test_models.py
Create the request

This opens a fresh agent run and a draft PR for issue #3412.

Cancel