Skip to content

feat: add Zro provider (OpenAI-compatible gateway) - #1

Open
emirsoyturk wants to merge 3509 commits into
devfrom
feat/add-zro-provider
Open

emirsoyturk wants to merge 3509 commits into
devfrom
feat/add-zro-provider

Conversation

@emirsoyturk

Copy link
Copy Markdown
Collaborator

Adds the Zro provider (zro.moonmath.ai), an OpenAI-compatible service with three open-weight models:

  • GLM-5.2 none|high|max effort, interleaved, 524K ctx / 64K out, US region
  • DeepSeek V4 Flash none|high effort, interleaved, 1M ctx / 384K out, EU region
  • Kimi K3 low|high|max effort, interleaved, 1M ctx / 1M out, US region

rekram1-node and others added 27 commits October 21, 2026 11:12
* fix(helicone): set attachment on models whose registry input includes images

* chore(v2): migrate Helicone provider files to schema 2

* feat(helicone): link standalone files to their labs and leave model facts on the labs

* feat(helicone): backfill reasoning controls and Claude 1h cache-write prices

* fix(helicone): drop float noise from registry prices

* fix(helicone): make the registry generator patch v2 files instead of rewriting them

* fix(helicone): inherit tools on GPT-5 Pro and flag new generator files for a hand pass

* fix(helicone): mark o1-mini as reasoning and drop derived budget caps on the backfilled Claude files

* fix(labs): add the Grok family to grok-4-fast-reasoning and the Hermes family to hermes-2-pro-llama-3-8b

* fix(helicone): keep the Grok family on grok-4-fast-non-reasoning and grok-code-fast-1 as provider overrides
* feat(v2): mechanically migrate ZenMux provider files to schema 2

* feat(v2): migrate ZenMux files the script refused

* feat(v2): link standalone ZenMux files to lab models

* feat(v2): backfill ZenMux prices, limits, modalities, cache and lifecycle from its catalog

* fix(v2): keep ZenMux temperature, lab-capped limits and native effort levels

* fix(v2): ZenMux reasoning controls follow first-party surfaces

* feat(v2): model ZenMux DeepSeek V4 peak-hour pricing as a 2x multiplier
…cloud, volcengine, the-grid-ai, scaleway, evroc, vultr, routing-run) (anomalyco#10806)

* feat(v2): migrate jalapeno provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider jalapeno (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate io-net provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider io-net (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate gmicloud provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider gmicloud (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate volcengine provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider volcengine (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate the-grid-ai provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider the-grid-ai (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate scaleway provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider scaleway (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate evroc provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider evroc (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate vultr provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider vultr (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): migrate routing-run provider files to schema 2

Mechanical: bun packages/core/script/migrate-v2.ts provider routing-run (comments in the body moved into the header first). v1 output is byte-identical.

* feat(v2): backfill jalapeno cache prices and deprecations

Cache-read prices from the public priceRows of GET https://www.jalapeno-cloud.ai/token-api/v1/models/<modelId>. Hy3, Qwen3-Next-80B-A3B (Instruct, Thinking) and Qwen3-VL-235B-A22B (Instruct, Thinking) are no longer in the public catalog and are marked deprecated.

* feat(v2): link io-net models to labs and backfill prices from its catalog

- Migrates the 4 files the script refused: Llama 4 Maverick, Llama 3.2 90B Vision and Qwen2.5-VL 32B take image input, so attachment is true (Maverick is listed as text+image by GET /api/v1/models). Mistral Large 2411 is a text-only model (lab file), so its image input is dropped.
- Links 14 files to their lab models; model facts now come from the labs. Unsourced knowledge values are kept as overrides.
- Prices from GET https://api.intelligence.io.solutions/api/v1/models, which io.net documents as the pricing source. It lists no cache-write price, so the old cache_write values (2x the old input price, below the new input price on some models) are dropped.
- gpt-oss-120b/20b and GLM-4.6 are listed with supports_reasoning = true; reasoning.effort is documented for every reasoning model (none disables; gpt-oss can't disable).
- Deprecated 6 models no longer listed by the catalog.

* feat(v2): migrate gmicloud Claude 4.6/4.7 files with image input

GMI's model pages for Claude Opus 4.6, Opus 4.7 and Sonnet 4.6 show image_url input, so the text-only override is replaced with the lab's image MIME types (no PDF) and the files migrate to schema 2. MiniMax-M3 drops a context limit equal to the lab's (no v1 change).

* feat(v2): mark retired volcengine models deprecated

From Ark's model deprecation notice (https://www.volcengine.com/docs/ark/model-deprecation-notice): Seed 1.6, 1.6 Flash, 1.6 Vision and 1.8 were retired on 2026-09-21 (batch 9); Seed 2.0 Pro 260215 and 2.0 Code Preview 260215 retire on 2026-11-24 (batch 10). Prices were checked against the current price list (docs 82379/1544106, updated 2026-10-20) and still match at the noted CNY rate.

* feat(v2): convert scaleway EUR prices, link models to labs

- 11 files published Scaleway's EUR list prices as USD. Converted at the ECB rate 1 EUR = 1.1215 USD (2026-10-20) from https://www.scaleway.com/en/pricing/model-as-a-service/; the already-converted files keep their rates (EUR prices unchanged).
- llama-3.3-70b-instruct and gpt-oss-120b are text-only ('Chat' on the pricing page), so attachment is false; both migrate and link to their labs.
- qwen3-235b-a22b-instruct-2507 now links to the 2507 Instruct lab instead of the original hybrid Qwen3 235B; it is non-thinking, so reasoning and the 8.4 reasoning price are dropped.
- New lab baai/bge-multilingual-gemma2 (embedding, from the Hugging Face card); bge-multilingual-gemma2 and qwen3-embedding-8b link to embedding labs, so v1 type becomes embedding.
- Lab facts dropped from 5 base_model files; qwen3.6-35b-a3b uses the lab's image MIME types.

* feat(v2): link evroc models to labs and set embedding/reranking types

- gpt-oss-120b and Qwen3-Embedding-8B link to their labs.
- evroc's catalogue (https://docs.evroc.com/products/think/supported-models.html) lists multilingual-e5-large-instruct as embedding and Qwen3-Reranker-4B as reranking, so their v1 type is set.
- Qwen3.8-27B inherits the lab's modalities; evroc describes it as covering image and video.
- evroc publishes no public token prices, so prices are unchanged.

* feat(v2): backfill vultr MIME types and deprecations from its catalog

From GET https://api.vultrinference.com/v1/models: exact image/video formats for glm-5.3-flash and muse-glimmer-30b, and deepseek-v4-flash-0731 and laguna-s-2.1 are no longer listed, so they're deprecated. All listed prices match.

* feat(v2): drop routing-run limits that repeat the lab

Override-only cleanup; v1 is unchanged. api.routing.run and docs.routing.run return Cloudflare errors (530/1033) on 2026-10-21, so prices and the model list could not be rechecked.
…lyco#10771)

* feat(v2): migrate LLM Gateway upstream route files to schema 2 (mechanical)

* fix(sync): sort LLM Gateway deployment efforts low to high

* fix(sync): keep audio attachments and audio input prices on LLM Gateway routes

* feat(v2): migrate LLM Gateway transcription routes and add catalog audio prices

* feat(v2): add 1h cache write prices to LLM Gateway Claude routes

* feat(v2): link LLM Gateway upstream routes to their lab models

* feat(v2): mark LLM Gateway routes past their catalog deprecation date as deprecated
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
feat(recursive): add Flint and Flint 40B Free on OpenCode
…-cache-read

fix(opencode): restore GPT-6.1 Sol cached-read pricing
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
)

* feat(v2): migrate FastRouter provider files to schema 2 (mechanical)

* feat(v2): link FastRouter files to lab models

Link 17 standalone files to their labs (Gemini 2.5, GPT-5 family, GPT OSS, GPT Image 2,
GPT Realtime 1.5, Veo 3.1 x3, Seedance 2.0, Wan 2.6, Kimi K2, Qwen3 Coder, GLM-5) and drop
lab-identical fields. Imagen 4, Lucid, Grok 4 and DeepSeek R1 Distill Llama 70B have no lab.

* feat(v2): backfill FastRouter prices from the public catalog

Prices, cache reads/writes, context tiers, audio and image prices, service-tier
multipliers and per-second video prices from GET /api/v1/models (2026-10-21).
Deprecate 8 models absent from the catalog whose model pages return 404.

* fix(fastrouter): review fixes

- Mark kept host knowledge values as unsourced.
- gpt-oss-20b output inherits the lab's 32,768 (the catalog's max_completion_tokens); qwen3-coder output
  66,536 was a typo for the lab's 65,536.
- gemini-2.5-flash: drop the audio price, since the catalog lists no audio input modality.

* fix(fastrouter): temperature from the catalog; cite reasoning params and limits

- gpt-5, gpt-5-mini, gpt-5-nano, gpt-image-2 inherit temperature = false: the catalog lists
  no temperature parameter for them.
- Headers note which reasoning parameters the catalog lists, and that context limits are the
  catalog's context_length.

* docs(fastrouter): quote the catalog context_length in limit headers

* fix(fastrouter): lab reasoning controls, toggle wire paths, realtime temperature, Gemini audio price

- deepseek-v4-pro: DeepSeek's toggle + effort low/high/max.
- claude-opus-4.8: Anthropic's effort levels instead of an invented budget.
- gpt-realtime-1.5 inherits temperature = false.
- Toggle wire-path comments (lab fields) on deepseek-v4-pro, gemini-2.5-flash, kimi-k2.6, glm-5, glm-5.1.
- gemini-2.5-flash: catalog audio input price restored.

* fix(fastrouter): list Gemini 2.5 Flash audio input alongside its audio price
…alyco#10868)

* fix: correct input modalities on Seed 1.6 and four host models

* fix: keep IteraCompute Qwen3.8 2.4T image input (host documents vision)
…#10864)

* fix(v2): use exact MIME modalities for remaining providers

* fix(v2): use lab MIME formats for standalone single-model files
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
… and 10 more providers (anomalyco#10866)

* fix(v2): use exact MIME modalities for Vercel, DigitalOcean, OpenCode and 10 more providers

* fix(v2): use lab MIME types for standalone files that serve one lab model
* feat(scaleway): add lightonocr-3-0.8b to model list

* fix: Fixed lightonocr-3-0.8b.toml file naming

* fix: Fixed lab folder for lightonocr-3-0.8b.toml file

* fix(scaleway): add lab entry and flatten provider path for lightonocr-3-0.8b

- Add complete lab file at models/lightonai/lightonocr-3-0.8b.toml
- Reduce provider file to override-only with base_model
- Move provider file from nested lightonai/ to flat path to match
  Scaleway API model ID and existing entries
- Fix release_date to 2026-10-08 per HuggingFace model card
opencode-agent Bot and others added 30 commits October 23, 2026 04:32
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
* fix(mistral, minimax): tool changes bust the cache

* fix(mistral): correct Magistral Medium tool comment

* fix(minimax-cn): leave tool updates unset until tested on the CN host
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
…alyco#11127)

* feat(v2): list DigitalOcean Responses and Messages APIs, service-tier, cache TTL, image and web search prices

* fix(digitalocean): add sourced OpenAI cache writes, Haiku 5.5 long-context prices and Stable Audio speech type (changes v1)
…NVIDIA, Ollama Cloud, Poolside, Reflection, Thinking Machines, Together and Venice (anomalyco#11128)

* feat(neon): list Messages, Chat and generateContent APIs per model

* feat(novita-ai): sync Messages and Responses APIs and per-modality input prices

* feat(venice): sync the Responses API and web search price for text models

* feat(ollama-cloud): list Responses and Messages APIs for chat models

* fix(neon): gpt-5-nano cache read price from Neon's catalog (changes v1)
…, Databricks, Snowflake, Copilot and GitLab (anomalyco#11136)

* fix(v1): an API table without its own aisdk takes the provider's npm for its v1 shape

A leading [api.responses] on an @ai-sdk/openai or @ai-sdk/azure provider is
the SDK's default and should publish no v1 shape, as a file with no tables
does. Two Infer files that relied on the old reading keep their shape with
legacy_shape. v1 is byte-identical.

* fix(v1): @ai-sdk/xai defaults to Responses, like @ai-sdk/openai

createXai().languageModel() is the Responses model, so a leading
[api.responses] on xAI is the SDK's default and publishes no v1 shape. No
existing file is affected.

* feat(v2): list Bedrock Mantle Chat Completions, Responses and Messages APIs

* feat(v2): list Chat Completions next to Responses for Azure OpenAI chat models

* feat(v2): list Chat Completions next to Messages for GitHub Copilot Claude models

* feat(v2): list Messages for GitLab Duo Claude models and Responses for its OpenAI models

* feat(v2): list Databricks Responses for GPT and Anthropic Messages for Claude

* feat(v2): list Snowflake Cortex Anthropic Messages API for Claude models

* fix(azure): serve Foundry and legacy chat-only models on Chat Completions (pending approval)

Azure's Responses API lists only OpenAI models (and not gpt-3.5-turbo or
gpt-4-turbo), but these 26 models had no API table, so they inherited
@ai-sdk/azure's Responses default. Each now lists Chat Completions.

v1: these 26 models (and their azure-cognitive-services aliases) gain
provider.shape = "completions".
…nomalyco#11139)

* fix(vercel): mark OpenAI tool additions as cache-safe on the gateway

* fix(vercel): no tools.updates on pro models without prompt caching
…onses) (anomalyco#11143)

* openrouter: mark tools.updates true for Claude 4.8+ (Messages) and OpenAI (Responses)

* openrouter: limit tools.updates to models with cache numbers
…onshotai-cn, kimi-code-plan-cn, kimi-code-plan-global, minimax, minimax-cn, minimax-coding-plan, minimax-cn-coding-plan, zai, zai-coding-plan, zhipuai, zhipuai-coding-plan, xiaomi, xiaomi-token-plan-ams, xiaomi-token-plan-cn, xiaomi-token-plan-sgp, stepfun, stepfun-ai, stepfun-step-plan, longcat (anomalyco#11132)

* feat(v2): list Chat, Responses and Messages APIs for Moonshot, MiniMax, Z.ai, Xiaomi, StepFun and LongCat models

* feat(v2): add web search price for Xiaomi MiMo V2.6 models

* docs(longcat): document the per-API endpoints
…ba-cn, alibaba-token-plan, alibaba-token-plan-cn, alibaba-coding-plan, alibaba-coding-plan-cn (anomalyco#11131)

* feat(v2): list Responses and Messages APIs for Alibaba models

* feat(v2): add web search and explicit cache read prices for Alibaba models

* fix(alibaba): correct and backfill implicit and explicit cache prices
…ebius, Hugging Face and Baseten (anomalyco#11129)

* feat(v2): list Responses and Messages APIs for Modal models

* feat(v2): list the Responses API for Nebius models the catalog marks responses_api

* feat(v2): list the Responses API for Hugging Face chat models

* feat(v2): list the Messages API for Baseten chat models

* feat(v2): list the Responses API and browser search fee for Groq models

* fix(nebius): use the catalog's cached input prices (changes v1 cache_read)
…pic, Google, Vertex, xAI, Mistral, Cohere, DeepSeek, Perplexity and Meta (anomalyco#11135)

* feat(sync): write Mistral FIM, Moderations and OCR APIs from /v1/models capabilities

* fix(v2): resolve @ai-sdk/xai's default protocol as Responses, matching v1; document Mistral API tables

* feat(v2): list Chat Completions next to Responses for OpenAI chat models, and the Moderations API

* feat(v2): list Anthropic's OpenAI-compatible Chat Completions API for Claude models

* feat(v2): list Gemini API Chat Completions, Interactions and OpenAI-compatible embeddings

* feat(v2): list Vertex Interactions for Gemini and Responses for Grok

* feat(v2): list Responses then Chat Completions for xAI Grok chat models

* feat(v2): list Mistral FIM, Moderations and OCR APIs (written by the sync)

* feat(v2): list Cohere's Compatibility API next to native Chat

* feat(v2): list DeepSeek's Anthropic-compatible Messages API

* feat(v2): list Chat Completions and Messages next to Responses for Meta models

* feat(v2): list every API for the 16 OpenAI, Google and Anthropic models Vercel symlinks (pending approval)

Vercel's files for these models were symlinks to the first-party files, so the
first-party API tables would leak into Vercel. This replaces the 16 symlinks
with Vercel files (the 13 full OpenAI and Claude copies use base_model with
only the overrides), then lists the same APIs as the other first-party models.

v1: no field changes except canonical_model_id on the 13 base_model files; the
16 models also move within Vercel's model map. The next Vercel sync will start
patching these files from Vercel's catalog.
* Add MiniMax M3.1 Flash to NVIDIA provider

* Add hosted context limit (262,144) for MiniMax M3.1 Flash on NVIDIA, live-probed
…o#11119)

* fix(alibaba-token-plan): refine newly landed media metadata

* fix(media): keep lab input limits and audio-only transcription formats
…Cloudflare AI Gateway and Cloudflare Workers AI (anomalyco#11133)

* feat(v2): list Responses and Messages APIs for Fireworks AI models

* feat(v2): list the Responses API for Workers AI models whose schema takes it

* feat(v2): list REST Chat Completions, Responses and Messages APIs for Cloudflare AI Gateway models from the catalog's request formats

* fix(cloudflare-ai-gateway): point OpenAI and Anthropic routes at the gateway's native URLs (changes v1 provider.api)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Drop Kimi K3 and DeepSeek V4 Flash (no longer served), add Dolly 2
Security, and align costs, output caps and text-only modalities with
https://zro.moonmath.ai/pricing.
Rewrite the five model files with schema = 2, [capabilities] reasoning
and cache, [cost.text.*] and [api.chat-completions]; define the Dolly
fine-tunes as full v2 entries and set opencodeai on the provider.
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.