Add Hubris provider - #6352
Open
Aimagine-life wants to merge 7 commits into
Open
Add Hubris provider#6352Aimagine-life wants to merge 7 commits into
Aimagine-life wants to merge 7 commits into
Conversation
Hubris (https://hubris.pw) is an OpenAI-compatible LLM gateway billed in Russian rubles. Adds provider.toml (openai-compatible, HUBRIS_API_KEY, https://api.hubris.pw/v1), a currentColor logo, and 26 of the most used models as override-only entries on top of the existing lab metadata. Prices are the public RUB per-million rates converted to USD at the Bank of Russia rate on 2026-09-05 (86.5857 RUB/USD).
Contributor
Action items
|
Syncs providers/hubris from the public Hubris catalog. Prices are RUB and are converted at the Bank of Russia official daily rate (XML feed, JSON mirror as fallback); previously synced USD prices are kept while the converted value drifts less than 3% so daily FX moves do not churn files. Every model factors onto lab metadata via base_model; models without a models/ entry are skipped and listed in the notices. Catalog grows from the 26 hand-picked models to 185.
Contributor
Action items
|
Reasoning options now come from the OpenRouter entry for the same route (same wire surface), falling back to the lab's first-party entry, instead of a templated effort list; reasoners with no resolvable controls are skipped. Every model file gets a leading FX header with the Bank of Russia rate and date used for the RUB->USD conversion, plus wire-path comments for the emitted controls.
Author
|
Addressed the review items in the latest commit:
|
Contributor
Action items
|
Skipped remote ids are reported through skippedNotice, grouped by reason (no lab metadata / no resolvable reasoning controls). Routes whose slug differs from the lab model (gpt-5.6-*-pro) keep their own display name.
Author
|
Both follow-ups addressed in the latest commit:
|
Contributor
Action items
|
Author
|
Fixed: the JSON-mirror fallback now parses its ISO timestamp with |
Contributor
Action items
|
Reasoning models with no OpenRouter/lab controls now raise MissingReasoningOptionsError so the runner keeps any existing file and reports them instead of deleting. The JSON-mirror fallback takes the Bank of Russia calendar day as written instead of a UTC-shifted date.
Author
|
Both addressed in the latest commits:
Dry-run clean, |
Contributor
|
No actionable findings. |
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Provider
Hubris (https://hubris.pw) — an OpenAI-compatible LLM gateway billed in Russian rubles, serving OpenAI, Anthropic, Google, DeepSeek, Qwen, Z.ai, Moonshot, xAI, MiniMax and other models behind a single API key.
Same shape as the other OpenAI-compatible relays (e.g.
providers/requesty). Logo is acurrentColorSVG with a square viewBox.Sync module
packages/core/src/sync/providers/hubris.ts, registered insync/index.ts(aggregatorsgroup) and documented insync.md:https://hubris.pw/api/internal/models/catalog?limit=1000, no auth).https://www.cbr.ru/scripts/XML_daily.asp, JSON mirrorcbr-xml-daily.ruas fallback). Previously synced USD prices are kept while the converted value drifts less than 3 %, so the hourly sync does not churn every file on FX noise; real price changes still update.base_model(resolveModelMetadataBaseModel, same as OpenRouter/Requesty). Models without amodels/entry are skipped and listed in the sync notices (trackMissingModels: false, no issue spam);:batchvariants,~aliases and non-chat models (image/video/speech/embeddings) are skipped.reasoning/tool_call/structured_outputcome from the catalog'ssupportedParameters; reasoning models get the relay controls (effortnone/low/medium/high/max +budget_tokens), as for Requesty.limit.contextcomes from the catalog,limit.outputis inherited (falls back to context when the lab entry has none, like Requesty).Models
185 provider models, all override-only on top of existing lab metadata — the 26 hand-picked ones from the first commit plus everything else in the Hubris catalog that resolves to a
models/entry (Anthropic Claude 3.5–5 / Fable, OpenAI GPT-4 → GPT-6 Astra / o-series / gpt-oss, Gemini 2.5–3.8, DeepSeek V3–V4, Qwen 3–3.8, GLM 4.5–5.3, Kimi K2–K3, Grok 4.3–4.6, MiniMax M2–M3, Mistral, Llama, Nemotron, Perplexity Sonar, …).Model ids are the ids the gateway accepts verbatim (
vendor/model, OpenRouter-style), so file paths use the gateway's vendor prefixes (z-ai/,x-ai/,qwen/) whilebase_modelresolves to the lab ids (zhipuai/,xai/,alibaba/).Validation
bun models:sync hubris→ 159 created / 8 updated on top of the hand-authored files, thenbun models:sync hubris --dry-run→ clean (0/0/0).bun validatepasses with the new provider included.🤖 Generated with Claude Code