Skip to content

feat(melious): add Melious provider with 56 models - #5047

Open
pvdspek wants to merge 1 commit into
anomalyco:devfrom
pvdspek:add-melious-provider
Open

feat(melious): add Melious provider with 56 models#5047
pvdspek wants to merge 1 commit into
anomalyco:devfrom
pvdspek:add-melious-provider

Conversation

@pvdspek

@pvdspek pvdspek commented Aug 19, 2026

Copy link
Copy Markdown

Adds Melious (Melious AI GmbH), a European relay for open-weight models with an OpenAI-compatible endpoint at https://api.melious.ai/v1.

Supersedes #4438 — same final content, squashed onto current dev as a single commit so no intermediate patch touches shared lab metadata.

What's here

providers/melious/ provider.toml, logo.svg, and 56 model entries — 49 chat + 7 embedding
models/ 14 new lab metadata entries, needed as base_model targets. No existing lab entry is modified.
labs/ descriptions for 5 new labs; logos for 3 of them
packages/web/src/render.tsx 4 lines added to LAB_NAME_OVERRIDES

Every provider entry uses base_model and is override-only. New labs: nousresearch, hcompany, baai, intfloat, sentence-transformers.

Sources

Pricing

All costs are USD/MTok, converted from EUR at 1.1535 USD/EUR — the ECB euro reference rate for 2026-08-07. Rate and date are recorded in a leading comment in every model file.

Melious publishes two prices per model. I used the hub balanced-route price, because a bare model ID resolves to balanced — that is what you are billed calling model="gpt-oss-120b". The /pricing rate card agrees for 41 of 49 chat models; the sharpest divergence is gpt-oss-120b (rate card €0.04/€0.20 vs balanced €0.22/€0.66). Happy to switch those 8 if maintainers prefer the published table.

cost.cache_read is set where Melious charges a discounted cached-prompt rate. Their docs note caching is billed but not user-controllable.

Scope

Only models listed on https://melious.ai/hub/models are included. apertus-70b appears on the rate card but has no hub page (404, absent from all 64 hub listings), so it is excluded. Image and audio models are excluded — they price per-image and per-minute, which the cost schema does not express.

Reasoning options

Per https://melious.ai/docs/reference/chat-completions, this host exposes exactly one reasoning control:

reasoning_effort · string · "low", "medium", "high" for reasoning models. Ignored by non-reasoning models.

There is no thinking object, no on/off field, and no reasoning budget field — so no entry uses toggle or budget_tokens, and none/max are not authored because this API does not accept them. preset biases routing, not reasoning depth.

  • 27 modelseffort low|medium|high: the underlying model has a real on/off or graded thinking control, and effort is the only dial this host exposes.
  • 7 models[]: no dial exists upstream for effort to drive. deepseek-r1-0528, minimax-m2.5, minimax-m2.7, kimi-k2.7-code — the first-party lab host authors [] (deepseek-reasoner, MiniMax-M2.5/M2.7, kimi-k2.7-code). qwen3-next-80b-a3b-thinking — Alibaba exposes only a reasoning budget, which this host has no field for. hermes-4-405b/-70b — system-prompt steered; OpenRouter models it as a toggle, unavailable here.

Each [] entry names its baseline in a leading comment.

Limits

limit.context comes from each model's hub deployment context; all 24 overrides match the hub exactly. limit.output uses the hub's parameters.max_tokens where published (4 of 56) — notably devstral-2-123b-instruct-2512 and nemotron-3-nano-30b-a3b at 8 192. Where a smaller context is served and no max_tokens is published, output is capped at the served context with a comment saying so.

Two hub context figures are deliberately not used, because they exceed the model's architectural maximum: bge-large-en-v1.5 (hub 8192, model hard-capped at 512 positions) and qwen3-embedding-8b (hub 41000, native 32768). Both files record the discrepancy so a future sync does not reinstate it.

All 18 structured_output overrides match the hub's capabilities.structured_output exactly.

Lab logos

baai and nousresearch come from lobe-icons (MIT); hcompany is the official mark from hcompany.ai. All normalised to currentColor, no fixed width/height, square viewBox.

intfloat and sentence-transformers ship no logo — intfloat is an individual's Hugging Face handle with no brand mark, and sentence-transformers has no SVG anywhere (only _static/logo.png on sbert.net). Both fall back to the default logo, matching 10 other logo-less labs. I did not want to trace bitmaps into fake vectors.

Test plan

  • bun validate — exits 0
  • cd packages/web && bun run build — exits 0; /providers/melious renders, all 5 /labs/<id> pages render with correct display names, dist/logos/melious.svg and the 3 lab logos are emitted
  • Generated _api.json has 56 Melious models; every base_model resolves; every resolved model has limit.context + limit.output, and no limit.output exceeds its context
  • Every model with reasoning = true has reasoning_options; none set it with reasoning = false
  • No redundant overrides — no provider field restates its base value
  • All TOML comments sit above the first key, so sync preserves them
  • bun test — 164 pass, 4 fail; all 4 fail identically on a clean dev checkout (2 DeepInfra sync assertions, 2 missing packages/sdk/src/snapshot.js build artifact). Unrelated to this change.

Note for the automated reviewer

Earlier review passes on #4438 repeatedly flagged models/meta/llama-3.1-8b-instruct.toml and models/alibaba/qwen3-vl-235b-a22b-instruct.toml as replacing existing lab metadata. That was true of the first commit in that branch and was reverted later, but the reviewer reads the cumulative patch series rather than the net diff, so it kept resurfacing. This PR is squashed specifically to remove that ambiguity: models/ here is additions only, and neither of those paths appears in the diff.

🤖 Generated with Claude Code

Melious AI GmbH relays open-weight models on European infrastructure behind an
OpenAI-compatible endpoint at https://api.melious.ai/v1.

- providers/melious: provider.toml, currentColor logo.svg, and 56 model entries
  (49 chat + 7 embedding), all override-only via base_model.
- models/: 14 new lab metadata entries needed as base_model targets, under the
  new labs nousresearch, hcompany, baai, intfloat and sentence-transformers. No
  existing lab entry is modified.
- labs/: descriptions for those five labs, logos for baai, nousresearch and
  hcompany, plus LAB_NAME_OVERRIDES so they render as "Nous Research",
  "H Company", "BAAI" and "intfloat" rather than a title-cased directory id.

Only models listed on https://melious.ai/hub/models are included.

Costs are USD/MTok, converted from Melious's EUR list price for the default
`balanced` route at 1.1535 USD/EUR (ECB euro reference rate, 2026-08-07).

Reasoning: this host flattens upstream thinking controls into a single
`reasoning_effort` field accepting low|medium|high, with no thinking/toggle
field and no reasoning budget field, so no entry uses `toggle` or
`budget_tokens`. Models whose underlying lab exposes no caller-side control
use []. See https://melious.ai/docs/reference/chat-completions

Limits come from each model's hub deployment values, including
parameters.max_tokens where published.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Checking how lab names are rendered and a few remaining edge cases.

@pvdspek
pvdspek marked this pull request as draft August 19, 2026 14:27
@pvdspek
pvdspek marked this pull request as ready for review August 19, 2026 14:27
@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/melious/models/deepseek-v4-pro.toml:5 - Check: Reasoning options must follow lab + same-surface peers, not a universal L/M/H gateway enum (AGENTS.md → Reasoning options; audit skill anti-pattern for DeepSeek V4). Why: First-party DeepSeek V4 Pro is toggle + high/max (OpenRouter peers use toggle + high/xhigh). Melious authors low/medium/high with no toggle, inventing GPT-style grades that neither the lab nor peers use. Same pattern on deepseek-v4-flash.toml and deepseek-v4-flash-0731.toml (lab Flash is toggle + low/high/max). Action: Replace with the host-expressible intersection of native/peer controls. If Melious truly cannot forward toggle or max, document the wire mapping and use the values Melious actually applies (not a generic L/M/H dump); do not invent medium/high as if they were native V4 levels.
  • [high] [violation] providers/melious/models/kimi-k2.5.toml:7 - Check: Do not invent graded effort when lab/peers expose only toggle or no caller control. Why: Moonshot lab K2.5/K2.6 is toggle only; OpenRouter peers of both use []. Melious sets low/medium/high, inventing graded effort neither lab nor established relays advertise. Same issue on kimi-k2.6.toml. Action: Use [] unless Melious docs/tests show a real graded mapping for these IDs; if only on/off is forwarded, that still requires a documented toggle wire path (which Melious says it lacks).
  • [high] [violation] providers/melious/models/glm-4.7.toml:6 - Check: Baseline effort/toggle from lab + peers, not blanket L/M/H. Why: Zhipu lab GLM-5/5.1 are toggle-only; OpenRouter peers for GLM-4.7, GLM-5, and GLM-5.1 use []. Melious authors L/M/H on glm-4.7.toml, glm-5.toml, and glm-5.1.toml, inventing controls peers treat as absent. Action: Align with peers ([]) or prove Melious exposes real graded effort for these IDs; do not default every reasoner to L/M/H.
  • [high] [violation] providers/melious/models/glm-5.2.toml:5 - Check: Effort values must match native/peer set for the model. Why: First-party GLM-5.2 is high/max (not L/M/H); OpenRouter uses toggle + high/xhigh. Melious L/M/H invents low/medium and drops the native max-tier. Action: Author the host-expressible native/peer levels (e.g. high/max or peer high/xhigh), not GPT L/M/H.
  • [high] [violation] providers/melious/models/minimax-m3.toml:6 - Check: Do not invent graded effort when lab is toggle-only and peers use []. Why: MiniMax lab M3 is toggle only; OpenRouter minimax-m3 is []. Melious sets L/M/H. Action: Use [] (or a documented toggle if Melious actually forwards one); remove invented L/M/H.
  • [high] [violation] providers/melious/models/nemotron-3-nano-30b-a3b.toml:8 - Check: Relay reasoning_options must not invent controls peers omit. Why: OpenRouter’s Nemotron 3 Nano entry is [] (no caller control). Melious authors L/M/H without peer or lab graded-effort baseline. Action: Use [] unless Melious documents a real effort control for this ID.
  • [high] [violation] providers/melious/models/mistral-medium-3.5-128b.toml:7 - Check: Baseline = lab/peer effort set (none/high), not invented L/M/H. Why: First-party and OpenRouter Mistral Medium 3.5 / Small 4 use effort = ["none", "high"]. Melious sets low/medium/high on mistral-medium-3.5-128b.toml and mistral-small-4-119b-instruct.toml, inventing grades and dropping the none off sentinel. Action: Use none/high if Melious accepts those values; if the host only accepts L/M/H, cite a real mapping to Mistral’s none/high control or use [] rather than a false L/M/H enum.
  • [high] [violation] providers/melious/models/deepseek-v3.1.toml:6 - Check: Do not invent L/M/H when peers only expose toggle. Why: OpenRouter DeepSeek V3.1/V3.2 peers are toggle only (no graded effort). Melious authors L/M/H on deepseek-v3.1.toml and deepseek-v3.2.toml with no toggle wire field. Action: Prefer [] if Melious cannot forward thinking on/off; only keep effort values Melious actually maps for these models, with evidence.
  • [medium] [violation] providers/melious/models/gemma-4-26b-a4b.toml:5 - Check: Peer baseline for Gemma 4 is toggle, not L/M/H. Why: OpenRouter Gemma 4 26B/31B entries use toggle only. Melious authors L/M/H on both Gemma 4 files, inventing graded effort peers do not expose. Action: Use [] (no Melious toggle field) or document a real L/M/H mapping unique to Melious.
  • [medium] [violation] providers/melious/models/qwen3-32b.toml:6 - Check: Peer baseline is toggle (lab is toggle + budget), not L/M/H. Why: OpenRouter Qwen3-32B is toggle only; Alibaba is toggle + budget_tokens. Melious has neither toggle nor budget, but still authors L/M/H. Action: Use [] unless Melious docs show graded reasoning_effort actually controls this model.
  • [medium] [violation] providers/melious/models/qwen3.5-122b-a10b.toml:5 - Check: Qwen 3.5/3.6 hybrid controls are toggle (+ budget on lab), not GPT L/M/H. Why: Alibaba Qwen3.5/3.6 entries are toggle + budget_tokens; OpenRouter peers are typically toggle (sometimes + budget). Melious authors plain L/M/H on qwen3.5-122b-a10b, qwen3.5-397b-a17b, qwen3.5-9b, qwen3.6-27b, and qwen3.6-35b-a3b with no off control and no budget. Action: If Melious only flattens to effort strings, include how off is expressed (or use [] when off/budget cannot be forwarded); do not paste L/M/H as a stand-in for toggle+budget.
  • [medium] [violation] providers/melious/models/kimi-k3.toml:5 - Check: Effort values must match lab/peer set. Why: Lab and OpenRouter Kimi K3 use toggle + low/high/max. Melious authors low/medium/high (invents medium, drops max and toggle). Action: Align to low/high/max if those are what Melious forwards; omit toggle only if the host truly has no on/off field, and document that.
  • [medium] [violation] providers/melious/models/nemotron-3-super-120b-a12b.toml:6 - Check: Peer baseline is toggle + low/medium (+ budget), not generic L/M/H. Why: OpenRouter Nemotron 3 Super uses toggle + low/medium + budget_tokens. Melious L/M/H invents high and drops toggle/budget without host-specific evidence for those extras. Action: Match the peer effort set Melious can actually expose; do not add unproven high or claim budget support.
  • [medium] [possible mistake] providers/melious/models/minimax-m3.toml:6 - Check: Provider claim that every reasoner gets L/M/H vs models marked always-on / no control. Why: The PR/provider header asserts Melious flattens all thinking into reasoning_effort=low|medium|high, but several entries correctly use [] (R1, Hermes, K2.7 Code, MiniMax M2.5/M2.7, Qwen3-Next thinking) while others with the same peer pattern get L/M/H. That split needs a consistent rule. Action: Document per-model which IDs Melious actually honors for reasoning_effort, and apply one rule: real control → concrete options; no control → []; never default the rest to L/M/H from the gateway template.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant