feat(providers): add Kyma - #6298
Conversation
Kyma is an OpenAI-compatible gateway (https://api.kymaapi.com/v1). Adds providers/kyma/ with 60 models, all base_model + real overrides only. This supersedes anomalyco#4019 (stale-closed 2026-09-03), which the automated reviewer flagged for two things, both fixed here: 1. reasoning_options was a blanket [] on 41 models. Every reasoning=true model here now carries real effort levels sourced from that model's own lab hosting entry (models/<lab>/) or, where the lab has no first-party listing, the established effort set used by existing same-surface OpenAI-compatible relays already in this repo. [] remains only where the model is genuinely always-on with no known caller control anywhere (MiniMax M2.5/M2.7, Kimi K2.7 Code, Grok Build, DeepSeek R1, Sonar). 2. Costs are cited: every price in [cost] comes from https://api.kymaapi.com/v1/models, Kyma's public, unauthenticated model catalogue (also linked per-file in a leading comment). 60 of Kyma's 70 per-token chat models are included; 10 are omitted because no models/<lab>/ lab entry exists yet for them (very recent releases, dated preview variants, or a lab not yet in this repo) and authoring a new lab file felt like a separate PR. Happy to file those once there's a base to point at. bun validate passes. logo.svg is providers/kyma/logo.svg (currentColor, square viewBox, already used on kymaapi.com). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Rok2mujdEZ2yGw8wVfbr9
Action items
|
Addresses the reviewer's action items on anomalyco#6298: 23 models authored an invented effort-only or effort-with-"none" control where the underlying model's lab entry (or, where no first-party lab file exists, the established OpenRouter peer) exposes a separate on/off toggle instead. - DeepSeek V4 Pro/Flash/Flash-Vision-Exp: toggle + effort (high/max on Pro; low/high/max on the two Flash variants, per the lab's own low->low vs low->high mapping note). - Claude Haiku 4.5, Gemini 2.5 Flash, Qwen3.6 Plus, Qwen3.7 Plus, Qwen3.7 Max, Qwen3.7 Flash, Qwen3-32B, Qwen3.8 Flash, Kimi K2.5, Kimi K2.6, GLM-4.5-Air, GLM-4.7-Flash, GLM-5.1, MiniMax-M3, MiMo-V2.5, Gemma 4 31B: toggle only (lab/peer expose no graded effort Kyma can distinguish from a plain reasoning_effort string). - Kimi K3, Claude Sonnet 5: toggle + the lab's real graded effort set. - Qwen3.8 Max: trimmed to the lab's toggle + low/medium/xhigh (the OpenRouter peer's wider 5-level enum is not the lab baseline). - Qwen3.8-27B: toggle + low/medium/xhigh, matching the OpenRouter peer (no first-party Alibaba entry exists for this id). Each file now carries a leading wire comment stating the mechanism: reasoning_effort = "none" to disable, other accepted values to select effort, consistent with the above.dev precedent for the same qwen3.8-max base_model in this repo. bun validate passes (exit 0). bun test: same 6 pre-existing failures as a clean dev checkout, no new failures introduced. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Rok2mujdEZ2yGw8wVfbr9
|
Addressed every action item in the bot review;
The wire comment on each file states the mechanism as verified today against Kyma's endpoint on qwen-3.6-plus: 200 reasoning tokens by default, 0 with |
Action items
|
…t reasoning sets Second round of reviewer feedback on anomalyco#6298: - gemini-3.7-flash.toml, gemini-3.8-flash.toml: reasoning_options effort trimmed to exactly low/medium/high (no "minimal" — not in the Google first-party or OpenRouter peer control set for these two ids). - claude-opus-5.toml: added `{ type = "toggle" }` alongside its existing effort list. Live-measured 2026-09-04 on api.kymaapi.com (max_tokens=120, "What is 17*23? Think step by step."): 32 reasoning tokens by default, 0 with reasoning_effort="none" — toggle is real on this route. - claude-opus-4-7.toml, claude-sonnet-4-6.toml: kept effort-only (no toggle claimed). Same live measurement on these two ids: 0 reasoning tokens by default even with no flag set — thinking is already off by default, so there is no observed on->off transition to justify a toggle. - qwen3.8-flash.toml: reverted to toggle + effort low/medium/xhigh, matching Alibaba's first-party entry, now that qwen-3.6-plus's live test confirms Kyma forwards reasoning_effort on this route. Budget_tokens still omitted — no evidence of a numeric budget field on this host. - Removed every hand-authored [limit] override (context and output) from all 60 Kyma model files. `maxOutputTokens: 8192` (and several other round numbers) recur identically across dozens of unrelated model families in Kyma's own registry — a shared platform default, not a per-model verified host cap — and one case (qwen-3.6-plus, 131,072 vs the 1,000,000 the route actually serves) is flatly wrong. All 60 entries now inherit limit.context/limit.output from their base_model. - Removed every hand-authored [modalities] override for the same reason: none of them were independently host-verified (muse-spark-1.1 wrongly added "audio" the lab entry does not have). All 60 entries now inherit modalities from their base_model. bun validate passes (exit 0). bun test: same 6 pre-existing failures as a clean dev checkout, no new failures. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Rok2mujdEZ2yGw8wVfbr9
|
Round two addressed in cdcf8a6, with host evidence measured on Kyma today (max_tokens 120, "What is 17*23? Think step by step."):
|
|
No actionable findings. |
…pt-oss-120b and llama-3.3-70b qwen-3.6-plus already inherits 1,000,000 context / 65,536 output from the alibaba/qwen3.6-plus lab entry (round 2 dropped the stale 131,072/32,768 override), so no [limit] change is needed. What was missing is modality scope: the lab entry lists video input, but this route only accepts text and image — verified live today with an image request that returned a correct answer, matching what api.kymaapi.com/v1/models publishes for this id. Adds a [modalities] override to reflect that real host delta. gpt-oss-120b and llama-3.3-70b already resolve reasoning correctly via base_model inheritance (openai/gpt-oss-120b = true, meta/llama-3.3-70b-instruct = false) — no change needed on either file. deepseek-v3 pointed base_model at deepseek/deepseek-v3, but this id actually serves DeepSeek V3.2, a hybrid thinking model (release date and behavior match the V3.2 lab entry, not V3.2's non-thinking predecessor). Re-pointed base_model to deepseek/deepseek-v3.2 so reasoning correctly resolves to true. No caller-facing reasoning control is forwarded on this route, so reasoning_options is empty (same pattern as deepseek-r1 elsewhere in this PR) rather than an invented toggle. bun validate passes; bun test shows the same 6 pre-existing failures as a clean dev checkout (snapshot build artifact + sync-script tests, unrelated to any provider). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Rok2mujdEZ2yGw8wVfbr9
|
Follow-up after a registry audit on our side. Three items: qwen-3.6-plus — this id already inherits gpt-oss-120b and llama-3.3-70b — checked both against their lab entries ( deepseek-v3 — this id actually serves DeepSeek V3.2 (hybrid thinking/non-thinking), not the original V3;
|
Action items
|
Kyma is an OpenAI-compatible LLM gateway (https://api.kymaapi.com/v1) that gives one
endpoint and one key for open and frontier language models across many labs, plus speech,
embedding, rerank, image and video models. This adds providers/kyma/ with 60 models, each
base_model plus real overrides only, per AGENTS.md.
This supersedes #4019 (opened 2026-08-03, stale-closed 2026-09-03), which the automated
reviewer left two action items on. Both are fixed here:
carries real effort levels, sourced from that model's own lab hosting entry under
models// where one exists, or from the effort set already established by other
OpenAI-compatible relays in this repo for the same base_model. [] is kept only where the
model is genuinely always-on with no caller control anywhere in the repo (MiniMax
M2.5/M2.7, Kimi K2.7 Code, Grok Build, DeepSeek R1, Sonar/Sonar Pro).
public, unauthenticated model catalogue — also linked in a leading comment on each file.
60 of Kyma's 70 per-token chat models are included. 10 are left out because no models//
lab entry exists yet for the exact variant Kyma serves (very recent dated releases,
preview-only variants with no GA lab file, or one creator with no lab directory in this repo
yet) — happy to file those as a follow-up once there's a lab entry to point at, rather than
add stub lab files in the same PR as a new provider.
bun validate passes. logo.svg uses currentColor on a square viewBox, per AGENTS.md.
This entry is generated from the same catalogue that serves Kyma's own /v1/models, so prices
here and prices charged can't drift; happy to add a kyma:sync module in a follow-up if useful.
Maintained by Kyma — contact hello@kymaapi.com or @kyma-api if anything needs adjusting.