Skip to content

Add Omnious as an inference provider - #4034

Open
LJ-XRPL wants to merge 1 commit into
anomalyco:devfrom
LJ-XRPL:add-omnious-provider
Open

Add Omnious as an inference provider#4034
LJ-XRPL wants to merge 1 commit into
anomalyco:devfrom
LJ-XRPL:add-omnious-provider

Conversation

@LJ-XRPL

@LJ-XRPL LJ-XRPL commented Aug 4, 2026

Copy link
Copy Markdown

Omnious serves an OpenAI-compatible endpoint over a live per-request auction: providers bid to serve each call, and the winner is paid a second-score price capped by a genuine rival. A class's served price therefore moves with the book rather than sitting on a rate card.

That makes a hand-authored [cost] stale on arrival, so this adds a sync module rather than static pricing. GET /v1/models is public (no key required) and reports the current best bid per class as best_in / best_out in USDC base units per 1M tokens; the module converts those to USD and writes them as [cost]. It runs in the aggregators group so the existing automation keeps it current.

What each entry carries

Price is the only provider-specific fact Omnious publishes — there's no context, limit or capability data in the catalog. So each entry is base_model plus [cost] and inherits everything else, which means it can't contradict the base model:

base_model = "zhipuai/glm-5.2"

[cost]
input = 0.64526
output = 2.027962

Attribution

Classes are attributed by the router's issuer field, mapped to a models.dev author. When the router reports no issuer, the module falls back to a suffix match and takes it only when exactly one author publishes that model ID, so an ambiguous short name is skipped rather than assigned to whichever author sorted first.

A class is skipped when models.dev doesn't carry its base model yet, or when that base model has no limit.output to inherit (sakana/fugu-ultra, thinkingmachines/inkling) — inventing a ceiling seemed worse than omitting the row. 128 of 291 classes map today; the rest need their author metadata added under models/ first.

Lookups resolve through an index built from models/, keyed lowercase and mapped back to the ID as authored, because Omnious class names are lowercase while some base models aren't (minimax/MiniMax-M2). That also avoids an existsSync probe answering yes on a case-insensitive volume and then failing catalog generation on Linux.

Verification

  • bun models:sync omnious → 128 created
  • bun validate → passes
  • Spot-checked generated [cost] against the live endpoint (glm-5.2 → 0.64526 / 2.027962, kimi-k3 → 3.3 / 16.5)

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Action items

  • [critical] [violation] providers/omnious/logo.svg:1 - Check: New provider logo.svg must use currentColor, with no fixed size or hardcoded colors. Why: The logo sets width/height and hardcodes strokes/fills (#6c6a64, #a3a19a, #e6e4df, #a98e6f), so it will not theme correctly and fails the new-provider logo blocker. Action: Rewrite the SVG with a square viewBox, drop fixed dimensions, and express all fills/strokes as currentColor (use opacity if multi-tone is needed).
  • [high] [violation] providers/omnious/models/gpt-5.4.toml:2 - Check: Multi-model relays with reasoning = true must author host controls from the lab + same-surface peers; [] means no caller control, not uncertainty. Why: Omnious is an OpenAI-compatible multi-lab auction gateway, yet ~100 reasoners ship reasoning_options = [] (e.g. gpt-5.4, deepseek-v4-pro, claude-sonnet-5, Gemini/Qwen/GLM families). Lab/peers expose real controls (GPT effort L–xhigh; DeepSeek V4 toggle+high/max; Claude Sonnet 5 effort; etc.). The sync module only emits base_model+cost, so the runner will keep injecting [] for new reasoners. Action: For each reasoner, set options from first-party + OpenAI-compat peers (or document affirmative evidence Omnious exposes no control). Update translateModel / hand-authored files so automation preserves real options instead of defaulting to [].
  • [high] [violation] packages/core/src/sync/providers/omnious.ts:487 - Check: Sync must not delete catalog rows when a source model is only temporarily unusable (sync.md: return undefined only when absence should remove the local file). Why: translateModel returns undefined when best_in/best_out is missing or <= 0, and parseModels drops rows that fail schema. With default deleteMissing, the next hourly run removes the TOML even if the class is still served—especially risky for a live auction book. Action: When a class is attributable but has no live bid, preserve the existing entry (update cost only when both sides are priced), and/or set deleteMissing: false for price-only skips; reserve hard deletes for classes truly gone from the catalog.

Omnious serves an OpenAI-compatible endpoint over a live per-request
auction: providers bid to serve each call and the winner is paid a
second-score price capped by a genuine rival, so a class's served price
moves with the book rather than sitting on a rate card.

That makes a hand-authored [cost] stale on arrival, so this lands with a
sync module instead. `GET /v1/models` is public (no key) and reports the
current best bid per class as best_in / best_out in USDC base units per
1M tokens, which the module converts to USD and writes as [cost]. Runs
in the aggregators group, so the existing automation keeps it current.

Price is the only provider-specific fact here: Omnious publishes no
context or capability data, so each entry carries base_model plus [cost]
and inherits the rest. Classes are attributed by issuer, falling back to
a unique-suffix match when the router reports none, and skipped when
models.dev doesn't carry that base model yet — 128 of 291 classes map
today.
@LJ-XRPL
LJ-XRPL force-pushed the add-omnious-provider branch from ed12d43 to d2eceec Compare August 4, 2026 05:04
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/omnious/logo.svg:1 - Check: New-provider logo must use currentColor, no fixed size, no hardcoded colors. Why: The SVG sets width="144" height="144" and hardcodes stroke/fill colors (#6c6a64, #a3a19a, #e6e4df, #a98e6f), so it will not theme with the site and fails the new-provider logo blocker. Action: Rewrite logo.svg with a square viewBox, no width/height attributes, and currentColor for fills/strokes.
  • [high] [violation] providers/omnious/models/gpt-5.4.toml:2 - Check: Multi-model relays must set reasoning_options from the lab entry + same-surface peers; [] means no caller control, not uncertainty. Why: Omnious is an OpenAI-compatible aggregator, yet every reasoning model is authored with reasoning_options = [] (including GPT-5.x, Claude Sonnet/Fable 5, DeepSeek V4, Gemini, Qwen, Kimi, MiniMax, etc.). Lab/peers expose real controls (e.g. OpenAI/OpenRouter/Vercel/LLM Gateway GPT-5.4: effort none|low|medium|high|xhigh; DeepSeek V4: toggle + high/max; Claude Sonnet 5 peers: effort levels). Shipping blank options misrepresents the API surface for ~100 reasoners. Action: For each reasoning = true Omnious model, copy the lab + openai-compatible peer option set (effort/toggle/budget as applicable); keep [] only where lab/peers affirm always-on/no control (e.g. classic R1-style). After authoring, later cost-only syncs will preserve those options via the runner.

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