feat(melious): add Melious provider with the GLM, DeepSeek and Kimi families - #7046
Conversation
…amilies Melious AI GmbH is a European OpenAI-compatible relay of open-weight models. This is the first of two PRs: it adds the provider and the 15 models whose lab metadata already exists under models/, so it touches providers/melious/ only -- no models/, labs/ or render.tsx changes. The remaining catalog follows once this lands. Every entry uses base_model and is override-only. Data: GET https://api.melious.ai/v1/models?include_meta=true, cross-checked against the per-model hub pages. Prices are the default `balanced` route (a bare chat model ID resolves to `balanced`), converted at 1.1592 USD/EUR (ECB euro reference rate, 2026-09-11). Each file records its EUR figures, the rate and the date so the arithmetic is checkable from the diff. Reasoning: reasoning_effort is the only control this host exposes -- no lab-native thinking field, no reasoning budget, so no toggle or budget_tokens. The host accepts any effort string without a 4xx, so the authored values are the documented ladder (low|medium|high) plus none, which was measured to be a real off state: it returns usage.reasoning_tokens = 0 and no reasoning_content on glm-5.3, deepseek-v4-pro and kimi-k2.7-code. Because none is reachable this is an effort list containing none, not a toggle. Reasoning text is returned in message.reasoning_content. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Action items
|
Replaces the uniform effort ["none","low","medium","high"] on all 15 entries, which asserted a graded ladder this host does not implement. Every model was probed against api.melious.ai/v1/chat/completions on 2026-09-14 at temperature 0 with the same prompt, comparing emitted reasoning_content across none/low/medium/high (repeat samples where the result was load-bearing): - 12 models: reasoning_effort="none" is a real off state (reasoning_tokens = 0, no reasoning_content) while low/medium/high all reason with no ordered difference in depth -> effort ["none", "high"]. An effort list containing none rather than a toggle, since off is reachable through this field. - glm-5, deepseek-r1-0528, kimi-k2.5: "none" does not suppress reasoning and no level grades -> reasoning_options = []. An affirmative measurement of no caller control, not an untested default. No model showed graded effort, so no graded levels are published. The host accepts any effort string without a 4xx, so acceptance was not treated as evidence. The catalog's reasoning_type is not a reliable guide either: glm-5.3-flash is typed always-on yet honours "none", glm-5 is typed hybrid yet ignores it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Fixed in 6180a3c — the finding was right, and the uniform ladder is gone. You were correct on the substance: acceptance was not evidence, the live checks covered Method. Each of the 15 models, same prompt, Result — two behaviours, neither of them a graded ladder.
(
Two things worth recording for future syncs, both now in the file comments:
|
|
No actionable findings. |
Adds Melious (Melious AI GmbH), a European OpenAI-compatible
relay of open-weight models, with an endpoint at
https://api.melious.ai/v1.Melious is a multi-model relay, not a lab — it did not build any model it serves —
so every entry uses
base_modeland is override-only.Scope: first of two PRs
This PR is deliberately narrow: the provider plus the GLM, DeepSeek and Kimi
families (15 models), all of which already have lab metadata under
models/.It touches
providers/melious/only — nomodels/, nolabs/, nopackages/web/src/render.tsx. A second PR adds the rest of the catalog, including the11 models that need new lab entries (BAAI, intfloat, sentence-transformers, NousResearch,
H Company and two Qwen ids). Splitting it this way keeps the shared-metadata discussion
out of the provider's own review.
Data provenance
Primary source is the authenticated catalog,
GET https://api.melious.ai/v1/models?include_meta=true,cross-checked against the per-model hub pages (
https://melious.ai/hub/models/<id>),both accessed 2026-09-14.
Prices are the
balancedroute: a bare chat model ID resolves tobalanced(routing docs), so that is what a caller of
model="glm-5.3"is billed. Only bare IDs are published — no:suffixvariants.Converted at 1.1592 USD/EUR, the ECB euro reference rate for 2026-09-11.
One rate for the whole PR; every file's leading comment records its EUR figures, the rate
and the date, so the arithmetic is checkable from the diff without leaving the page.
base_modeldeepseek-r1-0528deepseek/deepseek-r1deepseek-v3.2deepseek/deepseek-v3.2deepseek-v4-flash-0731deepseek/deepseek-v4-flash-0731deepseek-v4-prodeepseek/deepseek-v4-prodeepseek-v4-pro-0813deepseek/deepseek-v4-pro-0813deepseek-v4.1-flashdeepseek/deepseek-v4.1-flashglm-5zhipuai/glm-5glm-5.1zhipuai/glm-5.1glm-5.2zhipuai/glm-5.2glm-5.3zhipuai/glm-5.3glm-5.3-flashzhipuai/glm-5.3-flashkimi-k2.5moonshotai/kimi-k2.5kimi-k2.6moonshotai/kimi-k2.6kimi-k2.7-codemoonshotai/kimi-k2.7-codekimi-k3moonshotai/kimi-k3kimi-k2.7-codeoutput is EUR 3.00 in the catalog but EUR 3.50 on the hub,kimi-k2.5context is 262 000 not 256 000, and four cache rates are rounded in the hub UI.Reasoning options
reasoning_effortis the only reasoning control this host exposes. It forwards nolab-native thinking field — no
thinking.type, noenable_thinking, no reasoning budget —so no entry uses
toggleorbudget_tokens.The host accepts any effort string without a 4xx, including
minimal,xhighandmax, so acceptance alone proves nothing. The authored set is therefore the documentedladder plus one measured value:
reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high"] }]noneis a real off state — measured, not assumed.reasoning_effort="none"returnsusage.reasoning_tokens = 0and noreasoning_content, reproduced onglm-5.3,deepseek-v4-proandkimi-k2.7-code(2026-09-14, againstapi.melious.ai/v1/chat/completions). PerAGENTS.md, becausenoneis reachable thisis an effort list containing
none, not a toggle.low/medium/highare the ladder Melious documents in thechat-completions reference.
minimal/xhigh/maxare accepted but undocumented, and produced no behaviourdistinguishable from
high, so they are not authored — no full-enum dump.On divergence from the lab enums: several of these models expose
low|high|maxor atoggle on their first-party host, and those controls are simply not reachable through this
API. Per
AGENTS.md→ Reasoning options, a relay's options describe its own requestsurface. There is merged precedent for exactly this on same-surface relays, e.g.
providers/cortecs/models/deepseek-v4-pro.toml,providers/cortecs/models/deepseek-v4-flash-0731.toml,providers/digitalocean/models/deepseek-v4-flash-0731.tomlandproviders/nebius/models/zai-org/GLM-5.2.toml.[interleaved] field = "reasoning_content"is set from observed live responses, not assumed.Overrides
Inherited from the lab entries unless Melious genuinely differs. Real deltas only:
limit.contextwhere the served window differs:glm-5/glm-5.1(203 000),deepseek-r1-0528/deepseek-v3.2(164 000),kimi-k2.5(262 000),kimi-k2.6(256 000),kimi-k3(1 000 000 vs the lab's 1 048 576).limit.outputonly where the lab's output exceeds Melious's served context(
kimi-k2.5,kimi-k2.6).max_output_tokensis null for all 15, so output is otherwiseinherited rather than invented.
modalities.inputwhere this host routes less than the lab supports:glm-5.3-flash(no PDF) and
kimi-k2.5(no video).Names, descriptions, dates,
tool_call,open_weightsand matching limits/modalities arenot restated.
Prior art
#5047 and
#5221 both propose this provider and
are both currently blocked. Their published data also contradicts each other and the live
catalog, so nothing here is ported from either — every value was re-sourced on 2026-09-14.
Two concrete corrections that came out of that: #5221 states an explicit
reasoning_effort: "none"still returns reasoning and therefore omits it — measurement aboveshows it does reach an off state; and
mistral/voxtral-small-2507, used as abase_modeltarget in #5047, does not exist (
models/mistral/voxtral-small-24b-2507.tomldoes).Test plan
bun validate— exits 0bun run testinpackages/sdk— 23 pass, 0 failcd packages/web && bun run build—dist/_api.jsoncontainsmeliouswith 15 models;dist/logos/melious.svgemitted; the provider page rendersbase_model; no restated-identical fields; noidkey; nocontext_over_200klimit.output > limit.context; nocache_read >= input; every resolved model haslimit.context+limit.outputlogo.svg— squareviewBox,currentColor, no fixed width/height, no hardcoded colorsHappy to add a sync module if maintainers want to add a
MELIOUS_API_KEYsecret tosync-models.yml— the catalog endpoint is rich enough to drive one.🤖 Generated with Claude Code