Compare commits

...

1067 Commits

Author SHA1 Message Date
opencode-agent[bot] b34b472f2b chore(sync): update Vercel AI Gateway model catalog 2026-08-22 17:24:18 +00:00
opencode-agent[bot] 1197b897cd chore(sync): update OpenRouter model catalog (#5283)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 16:25:20 +00:00
opencode-agent[bot] 08324a024a chore(sync): update Eden AI model catalog (#5279)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 15:25:11 +00:00
opencode-agent[bot] d9664a597f chore(sync): update OpenRouter model catalog (#5278)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 15:25:03 +00:00
opencode-agent[bot] 9bc2e5060f chore(sync): update OpenRouter model catalog (#5275)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 14:25:00 +00:00
opencode-agent[bot] 5dc6e5596e chore(sync): update OpenRouter model catalog (#5273)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 13:26:50 +00:00
opencode-agent[bot] 80fec61684 chore(sync): update NanoGPT model catalog (#5272)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 13:26:45 +00:00
opencode-agent[bot] 187b84fed8 chore(sync): update OpenRouter model catalog (#5271)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 12:26:42 +00:00
opencode-agent[bot] 96bb85ab42 chore(sync): update OpenRouter model catalog (#5269)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 11:24:42 +00:00
opencode-agent[bot] b1fa7d380b chore(sync): update Kilo model catalog (#5268)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 10:25:34 +00:00
opencode-agent[bot] 17be3aded6 chore(sync): update NanoGPT model catalog (#5267)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 10:25:29 +00:00
opencode-agent[bot] 84c6e0ab33 chore(sync): update OpenRouter model catalog (#5266)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 10:25:26 +00:00
opencode-agent[bot] ddd38595ce chore(sync): update OpenRouter model catalog (#5265)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 09:25:48 +00:00
opencode-agent[bot] 9859850d80 chore(sync): update OpenRouter model catalog (#5264)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 08:26:05 +00:00
opencode-agent[bot] 4662ca4fe8 chore(sync): update Kilo model catalog (#5262)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 07:26:31 +00:00
opencode-agent[bot] c2b6462775 chore(sync): update OpenRouter model catalog (#5263)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 07:26:28 +00:00
opencode-agent[bot] 6555ae4840 chore(sync): update Kilo model catalog (#5261)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 06:26:56 +00:00
opencode-agent[bot] 454b743d8d chore(sync): update NanoGPT model catalog (#5260)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 06:26:55 +00:00
opencode-agent[bot] b25aed9f33 chore(sync): update OpenRouter model catalog (#5259)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 06:26:51 +00:00
opencode-agent[bot] 926ddc80f4 chore(sync): update OpenRouter model catalog (#5257)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 05:25:58 +00:00
opencode-agent[bot] c4b0fdf44a chore(sync): update Eden AI model catalog (#5258)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 05:25:54 +00:00
opencode-agent[bot] 2b7c941c54 chore(sync): update Kilo model catalog (#5254)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 04:26:45 +00:00
opencode-agent[bot] 1ff93961e2 chore(sync): update OpenRouter model catalog (#5256)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 04:26:43 +00:00
opencode-agent[bot] 8b9140995b chore(sync): update NanoGPT model catalog (#5255)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 04:26:40 +00:00
opencode-agent[bot] 3d95ac8e9e chore(sync): update OpenRouter model catalog (#5253)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 03:29:34 +00:00
etonlels 957de8a086 feat(google-vertex): add Claude Fable 5 (#5239)
Co-authored-by: OpenCode google-vertex/claude-fable-5@default <noreply@opencode.ai>
2026-08-21 22:29:13 -05:00
opencode-agent[bot] ab54f8f837 chore(sync): update Merge Gateway model catalog (#5252)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 02:38:49 +00:00
opencode-agent[bot] 5c2e2feb97 chore(sync): update EmpirioLabs AI model catalog (#5251)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 02:38:45 +00:00
opencode-agent[bot] 7f6bdd8df9 chore(sync): update Kilo model catalog (#5250)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 02:38:42 +00:00
opencode-agent[bot] 6bf6a28215 chore(sync): update OpenRouter model catalog (#5249)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 02:38:39 +00:00
opencode-agent[bot] 7833a07ac6 chore(sync): update Kilo model catalog (#5248)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 01:49:11 +00:00
opencode-agent[bot] 5ece41e93f chore(sync): update NanoGPT model catalog (#5247)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 01:49:08 +00:00
opencode-agent[bot] ed75c5d256 chore(sync): update OpenRouter model catalog (#5246)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 01:49:01 +00:00
opencode-agent[bot] f48197d85d chore(sync): update Kilo model catalog (#5244)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 00:28:30 +00:00
opencode-agent[bot] 87ea5d2529 chore(sync): update OpenRouter model catalog (#5245)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-22 00:28:24 +00:00
opencode-agent[bot] 04d021546b chore(sync): update DevPass (LLM Gateway) model catalog (#5243)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 22:25:48 +00:00
opencode-agent[bot] 5788f12158 chore(sync): update LLM Gateway model catalog (#5242)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 22:25:38 +00:00
opencode-agent[bot] f2e5d7f585 chore(sync): update Kilo model catalog (#5241)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 22:25:37 +00:00
opencode-agent[bot] ac9372fcf8 chore(sync): update OpenRouter model catalog (#5240)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 22:25:34 +00:00
Xarth f531977ba7 feat(deepseek): add V4 Flash Vision Exp (#5217) 2026-08-21 16:27:55 -05:00
opencode-agent[bot] 1e714f3ad3 chore(sync): update OpenRouter model catalog (#5238)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 21:25:32 +00:00
opencode-agent[bot] 9ada5b9911 chore(sync): update Kilo model catalog (#5237)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 21:25:30 +00:00
Stefan Avram 9c2b60d857 Merge pull request #5234 from anomalyco/sol-pricing-refresh
fix(opencode): update GPT-5.6 Sol pricing
2026-08-21 16:59:37 -04:00
Slickstef11 41b5e7cddf fix(opencode): update GPT-5.6 Sol pricing 2026-08-21 20:42:02 +00:00
opencode-agent[bot] 13f96bc93c chore(sync): update NanoGPT model catalog (#5232)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 20:25:49 +00:00
opencode-agent[bot] 9132115c0e chore(sync): update OpenRouter model catalog (#5233)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 20:25:47 +00:00
opencode-agent[bot] 500275da0b chore(sync): update Kilo model catalog (#5230)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 20:25:45 +00:00
opencode-agent[bot] c1da7fdc9d chore(sync): update Vercel AI Gateway model catalog (#5231)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 20:25:41 +00:00
opencode-agent[bot] a17f6d8694 chore(sync): update Kilo model catalog (#5224)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:26:15 +00:00
opencode-agent[bot] ece22eef84 chore(sync): update OpenRouter model catalog (#5223)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:26:07 +00:00
opencode-agent[bot] 72160bc19f chore(sync): update Vercel AI Gateway model catalog (#5228)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:26:00 +00:00
opencode-agent[bot] 1f708f969e chore(sync): update CrossModel model catalog (#5225)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:25:55 +00:00
opencode-agent[bot] 6e88b7a0ce chore(sync): update DigitalOcean model catalog (#5226)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:25:52 +00:00
opencode-agent[bot] 2e3ad0ff40 chore(sync): update Charm Hyper model catalog (#5227)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 19:25:48 +00:00
opencode-agent[bot] 2b1f0cf891 chore(sync): update Kilo model catalog (#5219)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 18:26:59 +00:00
opencode-agent[bot] 056d00cee6 chore(sync): update OpenRouter model catalog (#5220)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 18:26:57 +00:00
opencode-agent[bot] 7928f9d1da chore(sync): update OpenRouter model catalog (#5216)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 17:26:16 +00:00
opencode-agent[bot] 41c4888040 chore(sync): update Merge Gateway model catalog (#5214)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 16:27:08 +00:00
opencode-agent[bot] bfda5342b5 chore(sync): update Venice model catalog (#5215)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 16:27:03 +00:00
opencode-agent[bot] 3cfcd2da30 chore(sync): update Kilo model catalog (#5213)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 16:26:57 +00:00
github-actions[bot] f6db501e17 fix: [missing-model] ofox: deepseek/deepseek-v4-pro-0423 (#5155)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 11:16:56 -05:00
github-actions[bot] 3a28bd7fe1 fix: [missing-model] ofox: deepseek/deepseek-v4-flash-vision-exp (#5195)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-21 11:16:31 -05:00
Giacomo Barone 7486464f2f feat(scaleway): add DeepSeek V4 Flash 0731 (#5190)
* feat(scaleway): add DeepSeek V4 Flash 0731

Adds Scaleway's DeepSeek V4 Flash 0731 catalog entry.

Scaleway lists this model in its Generative APIs supported models: https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/#deepseek-v4-flash-0731

* fix(scaleway): update interleaved settings for deepseek-v4-flash-0731

Solves the action item in https://github.com/anomalyco/models.dev/pull/5190#issuecomment-5366956682
2026-08-21 11:12:58 -05:00
opencode-agent[bot] a166d7e2be chore(sync): update Eden AI model catalog (#5212)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 15:27:06 +00:00
opencode-agent[bot] 833196a486 chore(sync): update Kilo model catalog (#5211)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 15:26:54 +00:00
opencode-agent[bot] f329edb60d chore(sync): update Eden AI model catalog (#5210)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 14:27:14 +00:00
opencode-agent[bot] a7ea88af6c chore(sync): update OpenRouter model catalog (#5209)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 14:27:07 +00:00
opencode-agent[bot] 6c0430d65e chore(sync): update LLM Gateway model catalog (#5204)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 09:25:45 -05:00
opencode-agent[bot] 248ad16abe chore(sync): update Vercel AI Gateway model catalog (#5207)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): add DeepSeek vision reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-21 09:25:31 -05:00
opencode-agent[bot] d8e4cf27ce chore(sync): auto-merge LLM Gateway provider updates (#5208)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-21 09:25:18 -05:00
github-actions[bot] 4cf7aa8d2e fix: [missing-model] ofox: bailian/qwen3.8-27b (#5198)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 09:22:39 -05:00
github-actions[bot] 0012b37bec fix: GPT 5.6 Sol pricing on copilot is reduced by 50% (#5186)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 09:21:57 -05:00
opencode-agent[bot] bf7b8715d0 chore(sync): update Kilo model catalog (#5206)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 13:32:43 +00:00
opencode-agent[bot] a06aa2a0c0 chore(sync): update OpenRouter model catalog (#5205)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 13:32:38 +00:00
opencode-agent[bot] d01ce8f7be chore(sync): update Charm Hyper model catalog (#5203)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 13:32:34 +00:00
Jack c47d740835 Merge pull request #5202 from anomalyco/deepseek-vision-go
feat(opencode-go): add DeepSeek vision model
2026-08-21 21:29:39 +08:00
Jack c79ec0614a feat(opencode-go): add DeepSeek vision model 2026-08-21 21:03:41 +08:00
opencode-agent[bot] 2d1814c560 chore(sync): update OpenRouter model catalog (#5201)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 12:27:22 +00:00
opencode-agent[bot] ecc01cbf9e chore(sync): update Kilo model catalog (#5200)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 12:27:17 +00:00
opencode-agent[bot] 5eb141526e chore(sync): update NanoGPT model catalog (#5197)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 11:25:44 +00:00
opencode-agent[bot] 4806baa1e2 chore(sync): update Kilo model catalog (#5193)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 10:26:23 +00:00
opencode-agent[bot] 4e5780c4e8 chore(sync): update OpenRouter model catalog (#5192)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 10:26:19 +00:00
opencode-agent[bot] e8f9178558 chore(sync): update Ofox model catalog (#5191)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 09:27:32 +00:00
Jack 12c058e9b3 update Ox Alpha name 2026-08-21 16:40:59 +08:00
Jack f0d08819f4 feat(opencode-go): add Ox Alpha Free model 2026-08-21 16:34:59 +08:00
opencode-agent[bot] 1bc4a63085 chore(sync): update Eden AI model catalog (#5189)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 07:30:54 +00:00
opencode-agent[bot] 6e9c3022e9 chore(sync): update Kilo model catalog (#5188)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 07:30:50 +00:00
opencode-agent[bot] 1c6a4b39dd chore(sync): update OpenRouter model catalog (#5187)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 07:30:47 +00:00
opencode-agent[bot] 501c0d8797 fix: audit Google Gemini pricing (#5184)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-21 01:42:28 -05:00
opencode-agent[bot] d119ecda15 chore(sync): update OpenRouter model catalog (#5183)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 06:27:28 +00:00
opencode-agent[bot] 2ab8e12320 chore(sync): update Kilo model catalog (#5182)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 06:27:26 +00:00
opencode-agent[bot] d2ec701bac chore(sync): update Kilo model catalog (#5177)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 05:26:53 +00:00
opencode-agent[bot] 2975e20f0e chore(sync): update OpenRouter model catalog (#5178)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 05:26:50 +00:00
opencode-agent[bot] bf3c7a6593 chore(sync): update Eden AI model catalog (#5179)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 05:26:47 +00:00
opencode-agent[bot] b7ab552229 chore(sync): update OpenRouter model catalog (#5176)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 04:27:38 +00:00
opencode-agent[bot] b8699e7490 chore(sync): update Kilo model catalog (#5174)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 04:27:36 +00:00
opencode-agent[bot] d546d46149 chore(sync): update DigitalOcean model catalog (#5175)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 04:27:34 +00:00
opencode-agent[bot] e335349ff9 chore(sync): update DigitalOcean model catalog (#5173)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 03:34:54 +00:00
opencode-agent[bot] 4959f546af chore(sync): update Kilo model catalog (#5172)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 03:34:51 +00:00
opencode-agent[bot] 2c22abe1ec chore(sync): update OpenRouter model catalog (#5171)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 03:34:48 +00:00
opencode-agent[bot] 09e6bd456c chore(sync): update Vercel AI Gateway model catalog (#5170)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 02:41:48 +00:00
opencode-agent[bot] aafdc02886 chore(sync): update Merge Gateway model catalog (#5168)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 01:52:50 +00:00
opencode-agent[bot] 5376f0eb29 chore(sync): update DigitalOcean model catalog (#5167)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 01:52:41 +00:00
opencode-agent[bot] 969a033185 chore(sync): update LLM Gateway model catalog (#5164)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 00:28:33 +00:00
opencode-agent[bot] 7265df53be chore(sync): update Kilo model catalog (#5165)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 00:28:30 +00:00
opencode-agent[bot] cc3e435965 chore(sync): update OpenRouter model catalog (#5166)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-21 00:28:28 +00:00
opencode-agent[bot] 0c80e74367 chore(sync): update Vercel AI Gateway model catalog (#5147)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:57:08 -05:00
opencode-agent[bot] 41e1305c35 chore(sync): update LLM Gateway model catalog (#5153)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:56:42 -05:00
opencode-agent[bot] 74a7c9c038 chore(sync): update Pioneer model catalog (#5129)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:56:13 -05:00
opencode-agent[bot] 9e7b9e473d chore(sync): update Kilo model catalog (#5163)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 23:25:34 +00:00
Frank 0cb8575c52 update zen models 2026-08-20 18:33:08 -04:00
opencode-agent[bot] 32cf45d46e chore(sync): update Charm Hyper model catalog (#5160)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 22:25:56 +00:00
opencode-agent[bot] 96e83c0cc8 chore(sync): update Merge Gateway model catalog (#5162)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 22:25:51 +00:00
opencode-agent[bot] b10ebddf0c chore(sync): update OpenRouter model catalog (#5161)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 22:25:48 +00:00
opencode-agent[bot] fa41a94589 chore(sync): update Kilo model catalog (#5158)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 21:26:53 +00:00
opencode-agent[bot] 9d1bf55e92 chore(sync): update OpenRouter model catalog (#5159)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 21:26:03 +00:00
opencode-agent[bot] 4a294f593e chore(sync): update Kilo model catalog (#5156)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 20:26:09 +00:00
opencode-agent[bot] f67627311a chore(sync): update OpenRouter model catalog (#5157)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 20:26:03 +00:00
opencode-agent[bot] 049d72f831 chore(sync): update Charm Hyper model catalog (#5149)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 19:26:49 +00:00
opencode-agent[bot] 3067ef6331 chore(sync): update Ambient model catalog (#5152)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 19:26:43 +00:00
opencode-agent[bot] dbecf3591b chore(sync): update Kilo model catalog (#5146)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 19:26:37 +00:00
Ismail Ghallou 82345e0bf3 feat: split LLM Gateway into two provider catalogs (#4011)
* feat: split LLM Gateway into two provider catalogs

Renames the existing llmgateway provider to "DevPass (LLM Gateway)" (id
and models unchanged: the aggregated, auto-routed root-model catalog) and
adds llmgateway-providers ("LLM Gateway"): one entry per upstream
provider mapping, addressed as provider/model-id, synced from
/v1/models?mapped=true. The catalog starts empty and is populated by the
scheduled sync automation; the sync refuses to run against a deployment
without the mapped view so it fails loudly instead of syncing wrong ids.

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* fix: apply deployment data on mapped factored entries

Addresses the PR review: brand-new factored mapped entries now carry the
mapping's own capability flags (attachment/tool_call/reasoning and
structured_output) as overrides, translate the deployment's declared
reasoning_efforts into reasoning_options instead of stamping [], prefer
the gateway's served max_output over inherited/authored output limits,
and only fall back to context when the base metadata declares no output.
Adds unit tests for mapped factoring, capability overrides, max_output
preference, and the unprefixed-id refusal guard.

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* chore: seed the llmgateway-providers catalog

The dev branch now rejects providers with zero models, so the empty
.gitkeep-anchored catalog no longer validates. Seed it with a small
representative set generated by the sync (factored, full, duplicate
deployments of one model, capability deltas); the scheduled sync fills
in the rest once the gateway's mapped view is live.

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* fix: honor base and sibling reasoning data on mapped sync

Round 2 of review feedback:
- Factored resyncs no longer stamp context as limit.output when the
  gateway omits max_output and the base declares an output to inherit;
  the served max_output still wins whenever reported (creates and
  resyncs), and reasoning_options now refresh from deployment efforts.
- A deployment whose only accepted effort is "none" is a plain on/off
  switch, so it translates to a toggle (matches the lab's control).
- When a deployment declares no efforts, mapped entries reuse the
  aggregated llmgateway catalog's curated reasoning_options for the
  same root model instead of ending up with []; a curated [] counts as
  unknown so a bad first stamp is not sticky. The runner also stops
  stamping [] onto factored reasoners whose base metadata already
  declares reasoning_options (it would shadow the base's controls).
- perplexity added to the canonical prefixes so Sonar models factor
  against their lab metadata; the sonar-pro seed is now override-only.

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* fix: harden mapped sync guards and seed curation

Round 3 of review feedback:
- Both LLM Gateway syncs now reject an empty (or fully filtered)
  response instead of authoritatively deleting the catalog through the
  delete-missing pass; the every() prefix guard alone passed on [].
- A vision-less deployment also overrides modalities on factored
  creates, so attachment=false can no longer coexist with inherited
  image input (sonar-pro seed regenerated accordingly).
- Mapped entries copy the interleaved reasoning side-channel from the
  aggregated llmgateway catalog when the deployment reasons (same wire
  surface); glm-5.1 and kimi-k2.6 seeds now carry it.
- Toggle seeds carry the required leading wire-path comment.
- gpt-5.5 seeds author the 272k context pricing tier so resync
  preserves it, matching the first-party and aggregated entries.

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* fix: never author zero limits, enforce vision on modalities

Round 4 of review feedback:
- A missing/zero context_length is no longer written as limit.context=0:
  factored entries leave context unset and inherit the base, and
  unfactored creates without a positive served context are skipped
  (reported via sourceID) instead of publishing unusable limits. Applies
  to both the aggregated and mapped builders.
- vision=false now forces non-image input modalities from the mapping
  itself instead of trusting the model-level architecture, on both the
  factored and unfactored create paths (and the existing-full fallback).

Claude-Session: https://claude.ai/code/session_017pReWhniXJcDL9aiQHqoFQ

* fix: scalable logo, require one mapping per entry

Review round 5: drop the fixed width/height from the new provider logo
(AGENTS.md blocker), and fail the mapped sync loudly when a kept model
does not carry exactly one providers[] mapping instead of letting the
builder silently fall back to noisy supported_parameters defaults.

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF

* fix: inherit lab descriptions, author toggle headers

Review round 6: mapped factored resyncs no longer stamp a synthesized
describeModel blurb as a sticky description override (unset keeps
inheriting the lab text, matching merge-gateway/cortecs), and mapped
sync writes now author the required leading wire-path comment on files
that carry a toggle reasoning control via a new optional header on the
translateModel result (an existing on-disk header always wins).

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF

* fix: keep mapping flags authoritative on resyncs

Review round 7: mapped existing-entry resyncs (factored and full) now
apply the deployment mapping's reasoning/vision/tools/structured-output
flags with the same authority as creates, so the written booleans and
the reasoning_options derived from them always move together and drift
self-heals hourly; prior curation only fills in where the mapping is
silent. Also documents in the together-ai/kimi-k2.6 seed header why
that pin is intentionally weaker than Together's first-party row (the
gateway serves it with tools/JSON off and a 32k output cap per its own
e2e'd catalog mapping).

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF

* fix: realign vision modalities in both directions

Review round 8: mapped resyncs no longer keep a stale text-only
modalities override once the deployment's vision returns — a declared
vision=true clears the override on factored entries (base image/pdf
inputs inherit again) and recomputes from the served architecture on
full entries, mirroring how vision=false already strips them; only a
silent mapping leaves curated modalities untouched.

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF

* fix: local perplexity resolution, no zero limits

Review round 9: drop the perplexity entry from the shared
CANONICAL_PROVIDER_PREFIXES (it would silently start factoring other
hosts' standalone perplexity files) — the llmgateway sync now resolves
lab IDs through resolveModelMetadataBaseModel, whose exact models/ path
match covers perplexity without touching other providers. Full-row
resyncs in both builders no longer fall back to the zero/absent
reported context: authored limits only ever carry known-positive
values, an authored 0 on disk counts as unusable, and a full row with
no usable context anywhere fails loudly (skipping would hand the file
to the delete-missing pass).

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF

* fix: merge deployment efforts with curated controls

Review round 10: deployment reasoning_efforts now own only the
effort/toggle surface — curated non-effort controls such as
budget_tokens (the same host's $.reasoning.max_tokens path, mirroring
DigitalOcean's sync) survive from the existing file or the aggregated
sibling instead of being wiped on every resync. Mapped creates also
seed cost.tiers from the aggregated sibling's curated tiers, since the
gateway API exposes none and the bulk sync would otherwise author
tiered models at flat long-context rates; authored tiers still win on
resync.

Claude-Session: https://claude.ai/code/session_0131ZfUnTfJrCzygw3wE4bNF
2026-08-20 13:39:11 -05:00
opencode-agent[bot] 38d785c8e3 chore(sync): update Tinfoil model catalog (#5145)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:27:55 +00:00
opencode-agent[bot] 706cfffebd chore(sync): update Requesty model catalog (#5143)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:27:40 +00:00
opencode-agent[bot] 6dbf20b1f2 chore(sync): update OpenRouter model catalog (#5144)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:27:24 +00:00
opencode-agent[bot] 36d38e8aa3 chore(sync): update Kilo model catalog (#5142)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:27:06 +00:00
opencode-agent[bot] d0b72154c6 chore(sync): update Charm Hyper model catalog (#5141)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 18:27:03 +00:00
Jack 603180530e feat(opencode): add Ox Alpha Free model 2026-08-21 02:04:32 +08:00
opencode-agent[bot] b398c049f7 chore(sync): update Tinfoil model catalog (#5140)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 17:26:25 +00:00
opencode-agent[bot] cdc6e5582f chore(sync): update Kilo model catalog (#5139)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 17:26:05 +00:00
opencode-agent[bot] ebc7bbd9ee chore(sync): update OpenRouter model catalog (#5138)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 17:26:02 +00:00
opencode-agent[bot] c553b71aa7 chore(sync): update Kilo model catalog (#5136)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 16:27:30 +00:00
opencode-agent[bot] 878b4900e6 chore(sync): update Charm Hyper model catalog (#5134)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 16:27:07 +00:00
opencode-agent[bot] 0c26307911 chore(sync): update LLM Gateway model catalog (#5135)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 16:26:47 +00:00
opencode-agent[bot] 25d0836a6d chore(sync): update OpenRouter model catalog (#5133)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 16:26:45 +00:00
opencode-agent[bot] 03f58ac523 fix(google-vertex): correct model pricing (#5132)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-20 11:10:48 -05:00
opencode-agent[bot] b6c06c36e8 chore(sync): update Eden AI model catalog (#5128)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 15:27:40 +00:00
opencode-agent[bot] 5dd44b5b3c chore(sync): update OpenRouter model catalog (#5127)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 15:27:12 +00:00
github-actions[bot] a9754eefbc fix: [missing-model] pioneer: nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16 (#5042)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-20 09:45:21 -05:00
轻尘 7e773e8bc7 feat: add DeepSeek-V4-Flash-0731, DeepSeek-V4-Pro, Qwen3.8-Max to SCNet Token Plan (#5122) 2026-08-20 09:43:06 -05:00
opencode-agent[bot] 0c79840754 chore(sync): update OpenRouter model catalog (#5125)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 14:27:34 +00:00
opencode-agent[bot] 722bb7f73a chore(sync): update Cortecs model catalog (#5126)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 14:27:16 +00:00
opencode-agent[bot] c0eb6257bd chore(sync): update Venice model catalog (#5123)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 14:27:14 +00:00
opencode-agent[bot] 4d59d1c742 chore(sync): update Kilo model catalog (#5124)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 14:26:56 +00:00
opencode-agent[bot] e73c7b064a chore(sync): update Eden AI model catalog (#5120)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 13:34:12 +00:00
opencode-agent[bot] 656bd85196 chore(sync): update Kilo model catalog (#5121)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 13:34:09 +00:00
opencode-agent[bot] f26d82b612 chore(sync): update Cortecs model catalog (#5119)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 13:34:07 +00:00
opencode-agent[bot] 370a0f665e chore(sync): update OpenRouter model catalog (#5118)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 13:33:49 +00:00
opencode-agent[bot] 4b494b2702 chore(sync): update Eden AI model catalog (#5116)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 10:26:31 +00:00
opencode-agent[bot] 7bd8b6310b chore(sync): update Ofox model catalog (#5115)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 10:26:11 +00:00
opencode-agent[bot] b6f133f18a chore(sync): update NanoGPT model catalog (#5113)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 09:26:54 +00:00
opencode-agent[bot] eeffdfc015 chore(sync): update OpenRouter model catalog (#5112)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 07:29:29 +00:00
opencode-agent[bot] 86c7c9b568 chore(sync): update Tinfoil model catalog (#5111)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 06:27:26 +00:00
opencode-agent[bot] 6ceb287630 chore(sync): update Eden AI model catalog (#5110)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 05:26:11 +00:00
Frank 838b1f9331 update zen models 2026-08-20 01:04:54 -04:00
Frank 8096c146aa update zen models 2026-08-20 00:59:13 -04:00
Frank cc26636044 update zen models 2026-08-20 00:53:13 -04:00
opencode-agent[bot] e886db8d9c chore(sync): update Kilo model catalog (#5108)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 02:40:21 +00:00
opencode-agent[bot] 59cf803f82 chore(sync): update OpenRouter model catalog (#5107)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 02:40:04 +00:00
opencode-agent[bot] 6abdd9cac2 chore(sync): update OpenRouter model catalog (#5106)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 01:50:02 +00:00
opencode-agent[bot] ca4255f8b5 chore(sync): update Kilo model catalog (#5104)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 01:49:39 +00:00
opencode-agent[bot] 4ba2f78edd chore(sync): update LLM Gateway model catalog (#5105)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 01:49:36 +00:00
opencode-agent[bot] 77a4d2b6f2 chore(sync): update OpenRouter model catalog (#5102)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 00:28:43 +00:00
opencode-agent[bot] cf38bb2b06 chore(sync): update EmpirioLabs AI model catalog (#5101)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 00:28:27 +00:00
opencode-agent[bot] 52a288b1f4 chore(sync): update Kilo model catalog (#5100)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-20 00:28:05 +00:00
opencode-agent[bot] a0dc9ecc2e chore(sync): update Kilo model catalog (#5099)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 22:25:58 +00:00
opencode-agent[bot] b8a3341005 chore(sync): update OpenRouter model catalog (#5097)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 22:25:41 +00:00
opencode-agent[bot] 1fe85c8e64 chore(sync): update Vercel AI Gateway model catalog (#5098)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 22:25:26 +00:00
opencode-agent[bot] 7112ec5bd8 chore(sync): update Cortecs model catalog (#5096)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:26:54 +00:00
opencode-agent[bot] 1d4b1d4ba5 chore(sync): update EmpirioLabs AI model catalog (#5091)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:26:37 +00:00
opencode-agent[bot] a0e338e043 chore(sync): update OpenRouter model catalog (#5095)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:26:20 +00:00
opencode-agent[bot] 1a0b079827 chore(sync): update LLM Gateway model catalog (#5094)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:26:04 +00:00
opencode-agent[bot] b9d441b97f chore(sync): update Ofox model catalog (#5092)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:25:51 +00:00
opencode-agent[bot] 3d661ef1ff chore(sync): update Weights & Biases model catalog (#5093)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:25:36 +00:00
opencode-agent[bot] 1fdde5d253 chore(sync): update Kilo model catalog (#5090)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 21:25:33 +00:00
opencode-agent[bot] 960ee7785d fix(sync): normalize Cortecs file modalities (#5089)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-19 15:36:24 -05:00
opencode-agent[bot] a00f0a2b28 chore(sync): update Hugging Face model catalog (#5079)
* chore(sync): update Hugging Face model catalog

* fix(huggingface): add GLM 4.6V reasoning toggle

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-19 15:30:04 -05:00
Adam 10b6f98158 feat(amazon-bedrock): add Grok 4.6 (#5082) 2026-08-19 15:27:06 -05:00
opencode-agent[bot] 999a96b630 chore(sync): update OpenRouter model catalog (#5088)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 20:26:28 +00:00
opencode-agent[bot] 456377e0d6 chore(sync): update Kilo model catalog (#5086)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 20:25:58 +00:00
opencode-agent[bot] dab12f78b7 chore(sync): update Vercel AI Gateway model catalog (#5087)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 20:25:54 +00:00
opencode-agent[bot] 2ba36bdd16 chore(sync): update Kilo model catalog (#5084)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 19:25:44 +00:00
opencode-agent[bot] ec9dce6e5f chore(sync): update Baseten model catalog (#5083)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 19:25:41 +00:00
opencode-agent[bot] bc3a372032 chore(sync): update OpenRouter model catalog (#5085)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 19:25:38 +00:00
Frank 8e3629ccde Reapply "update go models"
This reverts commit 6ad20d7ec1.
2026-08-19 15:01:33 -04:00
Frank 6ad20d7ec1 Revert "update go models"
This reverts commit e8f9754a01.
2026-08-19 14:58:08 -04:00
Frank e8f9754a01 update go models 2026-08-19 14:56:37 -04:00
opencode-agent[bot] 6ca616ca04 chore(sync): update EmpirioLabs AI model catalog (#5080)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 18:27:10 +00:00
opencode-agent[bot] 21df8dc8e7 chore(sync): update Charm Hyper model catalog (#5081)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 18:26:51 +00:00
opencode-agent[bot] 734d20ea43 chore(sync): allow CrossModel reasoning auto-merge (#5078)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-19 12:52:44 -05:00
Wassel Alazhar 57a8362627 umans-ai + coding-plan: remove umans-glm-5.1 (no longer served) (#5075)
umans-glm-5.1 has been retired from the umans.ai catalogue. The live
catalog (GET https://api.code.umans.ai/v1/models) no longer lists it, so
drop it from both the pay-per-token provider and the coding plan.
Everything else is unchanged.
2026-08-19 12:48:58 -05:00
opencode-agent[bot] 2974abc315 chore(sync): update Vercel AI Gateway model catalog (#5074)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-19 12:48:43 -05:00
opencode-agent[bot] 98de72cc24 fix(vercel): factor free routes onto base models (#5077)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-19 12:46:58 -05:00
opencode-agent[bot] d328ece240 fix(opencode): apply GPT-5.6 Sol discount pricing (#5076)
Co-authored-by: thdxr <826656+thdxr@users.noreply.github.com>
2026-08-19 12:45:32 -05:00
opencode-agent[bot] 8a99905508 chore(sync): update CrossModel model catalog (#5032)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 12:44:02 -05:00
Jaber Jaber 8e57e50555 feat(runinfra): add DeepSeek V4 Pro (#4971) 2026-08-19 12:43:48 -05:00
opencode-agent[bot] ef6b43ce32 chore(sync): update Pioneer model catalog (#5041)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 12:42:47 -05:00
opencode-agent[bot] ecf7cf243a chore(sync): update Kilo model catalog (#5073)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 17:26:07 +00:00
opencode-agent[bot] c225710a71 chore(sync): update OpenRouter model catalog (#5072)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 17:25:49 +00:00
Frank e9b309e53a Merge branch 'dev' of github.com:anomalyco/models.dev into dev 2026-08-19 12:53:09 -04:00
Frank 59b9946487 update go models 2026-08-19 12:53:07 -04:00
opencode-agent[bot] 47fb0bdbd5 chore(sync): update OpenRouter model catalog (#5070)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 16:26:47 +00:00
opencode-agent[bot] 4cd7df9f9a chore(sync): update Kilo model catalog (#5069)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 16:26:27 +00:00
opencode-agent[bot] 318e78edb6 chore(sync): update Inceptron model catalog (#5068)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 15:27:32 +00:00
opencode-agent[bot] d166a4a13c chore(sync): update LLM Gateway model catalog (#5067)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 15:27:13 +00:00
opencode-agent[bot] f90c61870e chore(sync): update Eden AI model catalog (#5066)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 15:26:58 +00:00
opencode-agent[bot] 176931b0a3 chore(sync): update Kilo model catalog (#5064)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 15:26:56 +00:00
opencode-agent[bot] d67ca7fb37 chore(sync): update OpenRouter model catalog (#5065)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 15:26:39 +00:00
opencode-agent[bot] cbee7a1586 chore(opencode): label GPT-5.6 Sol discount (#5062) 2026-08-19 14:28:04 +00:00
opencode-agent[bot] 6c01cb88cc chore(sync): update Kilo model catalog (#5061)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 14:27:11 +00:00
opencode-agent[bot] aa6ca0210e chore(sync): update OpenRouter model catalog (#5060)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 14:26:48 +00:00
opencode-agent[bot] 2e62366a32 chore(sync): update Charm Hyper model catalog (#5059)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 14:26:45 +00:00
Jack 7f06ffb7af Merge pull request #5045 from anomalyco/hy3-promotion
chore(opencode-go): promote Hy3 usage
2026-08-19 22:06:43 +08:00
opencode-agent[bot] 9cf4416ba3 chore(sync): update OpenRouter model catalog (#5057)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 13:32:36 +00:00
opencode-agent[bot] a23fd0a5a0 chore(sync): update Charm Hyper model catalog (#5056)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 13:32:06 +00:00
opencode-agent[bot] 9c7e86ad91 chore(sync): update Kilo model catalog (#5055)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 13:32:02 +00:00
opencode-agent[bot] 9455d5c4c5 chore(sync): update OpenRouter model catalog (#5052)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 12:27:35 +00:00
opencode-agent[bot] 9016ca7eec chore(sync): update Kilo model catalog (#5051)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 12:27:12 +00:00
opencode-agent[bot] 4d9e97392c chore(sync): update Charm Hyper model catalog (#5050)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 12:27:09 +00:00
opencode-agent[bot] 4600c45aba chore(sync): update Charm Hyper model catalog (#5048)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 11:25:27 +00:00
opencode-agent[bot] d583e01b18 chore(sync): update OpenRouter model catalog (#5046)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 10:25:51 +00:00
Jack 9a33d182cc chore(opencode-go): promote Hy3 usage 2026-08-19 17:31:05 +08:00
opencode-agent[bot] fbe9346bf1 chore(sync): update OpenRouter model catalog (#5044)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 09:27:12 +00:00
opencode-agent[bot] ce9b24d456 chore(sync): update Kilo model catalog (#5043)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 09:26:58 +00:00
opencode-agent[bot] ad2a14a912 chore(sync): update Chutes model catalog (#5040)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 08:27:14 +00:00
opencode-agent[bot] ef648f55cd chore(sync): update NanoGPT model catalog (#5039)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 08:26:56 +00:00
Frank 3e0c5ce943 update zen models 2026-08-19 03:26:31 -04:00
opencode-agent[bot] a618f53bea chore(sync): update OpenRouter model catalog (#5031)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 06:27:10 +00:00
Jack de028ac6ae Merge pull request #5027 from anomalyco/luna-go-pricing
chore(opencode-go): update GPT-5.6 Luna pricing
2026-08-19 14:23:04 +08:00
opencode-agent[bot] fbdc08704a chore(sync): update Eden AI model catalog (#5029)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 05:26:33 +00:00
opencode-agent[bot] 516f60127b chore(sync): update Kilo model catalog (#5030)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 05:26:16 +00:00
opencode-agent[bot] b9eed9a896 chore(sync): update OpenRouter model catalog (#5028)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 05:26:14 +00:00
github-actions[bot] 5f6906f257 fix: [missing-model] ofox: x-ai/grok-4.6 (#5020)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 23:54:56 -05:00
github-actions[bot] eea4c7205c fix: [missing-model] ofox: x-ai/grok-4.5 (#5021)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 23:54:48 -05:00
github-actions[bot] 634e8a574f fix: [missing-model] ofox: z-ai/glm-5.3 (#5026)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 23:54:36 -05:00
Jack 13319839ff chore(opencode-go): update GPT-5.6 Luna pricing 2026-08-19 12:30:41 +08:00
opencode-agent[bot] bc58309390 chore(sync): update OpenRouter model catalog (#5025)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 04:27:46 +00:00
opencode-agent[bot] 253dc360bb chore(sync): update EmpirioLabs AI model catalog (#5023)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 04:27:20 +00:00
opencode-agent[bot] eec220ab56 chore(sync): update Kilo model catalog (#5024)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 04:27:18 +00:00
Frank ab6c64dc89 Merge branch 'dev' of github.com:anomalyco/models.dev into dev 2026-08-19 00:26:28 -04:00
Frank 5b459e6b92 update zen models 2026-08-19 00:26:26 -04:00
opencode-agent[bot] 7cdb9c04d9 chore(sync): update Kilo model catalog (#5018)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 03:31:53 +00:00
opencode-agent[bot] de6b869fdc chore(sync): update OpenRouter model catalog (#5019)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 03:31:50 +00:00
opencode-agent[bot] 21c9cbf9e0 chore(sync): update OpenRouter model catalog (#5013)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 02:40:36 +00:00
opencode-agent[bot] 927bd8e512 chore(sync): update Kilo model catalog (#5014)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 02:40:21 +00:00
Adam d0e8132db4 feat: add Echo provider (#4855)
Signed-off-by: Adam Rida <adam.rida1998@hotmail.fr>
2026-08-18 21:15:50 -05:00
opencode-agent[bot] 6d022f0c46 chore(sync): update Requesty model catalog (#5004)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 21:01:06 -05:00
opencode-agent[bot] da2d59b263 chore(sync): update Kilo model catalog (#5012)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 01:50:56 +00:00
opencode-agent[bot] 069492081c chore(sync): update Venice model catalog (#5011)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 01:50:38 +00:00
github-actions[bot] 03ab3267e6 fix: [missing-model] ofox: google/gemini-3.7-flash (#4989)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 20:49:23 -05:00
opencode-agent[bot] 29fa112b1e chore(sync): update Kilo model catalog (#5010)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 00:28:17 +00:00
opencode-agent[bot] 7df3dafdb8 chore(sync): update Vercel AI Gateway model catalog (#5009)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 00:28:01 +00:00
opencode-agent[bot] ef282cd0f9 chore(sync): update OpenRouter model catalog (#5008)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-19 00:27:57 +00:00
opencode-agent[bot] ec1ce4fc60 chore(sync): update Merge Gateway model catalog (#5005)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 23:25:20 +00:00
opencode-agent[bot] cdd964974e chore(sync): update OpenRouter model catalog (#5007)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 23:25:03 +00:00
opencode-agent[bot] 2bd1c38272 chore(sync): update Kilo model catalog (#5006)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 23:25:01 +00:00
opencode-agent[bot] 32402a5c25 chore(sync): update Weights & Biases model catalog (#4997)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 17:59:13 -05:00
opencode-agent[bot] 4cb61fe693 chore(sync): update Merge Gateway model catalog (#5002)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 22:25:51 +00:00
opencode-agent[bot] 309ba41697 chore(sync): update Chutes model catalog (#4999)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 22:25:34 +00:00
opencode-agent[bot] 3846d9f46e chore(sync): update OpenRouter model catalog (#5001)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 22:25:31 +00:00
opencode-agent[bot] a9d2f256a6 chore(sync): update Kilo model catalog (#4998)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 22:25:16 +00:00
opencode-agent[bot] 105dffa330 chore(sync): update Venice model catalog (#5000)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 22:25:15 +00:00
opencode-agent[bot] a47d45f5b7 chore(sync): update OpenRouter model catalog (#4996)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 21:26:11 +00:00
opencode-agent[bot] 6f46fc309c chore(sync): update Kilo model catalog (#4995)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 21:25:52 +00:00
opencode-agent[bot] e4207aa568 chore(sync): update Vercel AI Gateway model catalog (#4994)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 21:25:33 +00:00
opencode-agent[bot] 7862322273 chore(sync): update LLM Gateway model catalog (#4992)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 20:25:58 +00:00
opencode-agent[bot] 0d7b2b33d6 chore(sync): update OpenRouter model catalog (#4991)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 20:25:39 +00:00
opencode-agent[bot] 90b939f82e chore(sync): update Kilo model catalog (#4990)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 20:25:23 +00:00
opencode-agent[bot] bd36de8b24 chore(sync): update Kilo model catalog (#4987)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 19:26:40 +00:00
opencode-agent[bot] c489d41a82 chore(sync): update OpenRouter model catalog (#4988)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 19:26:22 +00:00
opencode-agent[bot] 085ebee38b chore(sync): update Ambient model catalog (#4986)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 19:26:00 +00:00
opencode-agent[bot] 4059cbbc15 feat(providers/azure): add Claude Opus 4.7 (#4984)
* feat(providers/azure): add Claude Opus 4.7

* fix(providers/azure-cognitive-services): add Claude Opus 4.7

---------

Co-authored-by: Mike Sukmanowsky <mike.sukmanowsky@gmail.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-18 14:15:01 -05:00
opencode-agent[bot] eeaf8b2fdc chore(sync): update Vercel AI Gateway model catalog (#4980)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): add GLM 5.3 reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-18 14:14:48 -05:00
Roman Bange 017e91c9d1 fix: update hetzner models (#4975) 2026-08-18 14:12:39 -05:00
opencode-agent[bot] 7a4761172f fix(baseten): align reasoning metadata with docs (#4982)
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 14:03:37 -05:00
opencode-agent[bot] c235e49145 chore(sync): update Charm Hyper model catalog (#4981)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 18:27:19 +00:00
opencode-agent[bot] 35caa88ba7 chore(sync): update OpenRouter model catalog (#4979)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 18:27:02 +00:00
opencode-agent[bot] f266a50065 chore(sync): update LLM Gateway model catalog (#4978)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 18:26:59 +00:00
opencode-agent[bot] 6f7b1644cb chore(sync): update Charm Hyper model catalog (#4976)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 17:25:59 +00:00
opencode-agent[bot] ec8295bdf0 chore(sync): update NanoGPT model catalog (#4974)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 16:26:44 +00:00
opencode-agent[bot] 1649090517 chore(sync): update OpenRouter model catalog (#4973)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 16:26:41 +00:00
opencode-agent[bot] 9cfd6dcaff chore(sync): update Kilo model catalog (#4972)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 16:26:26 +00:00
opencode-agent[bot] e95c717a64 chore(sync): update Eden AI model catalog (#4970)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 15:26:45 +00:00
bhuvankakkar 0cd2d07081 feat(scx-ai): rename scx provider to scx-ai, add GLM-5.2 and Qwen3.8-Max (#4692)
* feat(scx-ai): rename scx provider to scx-ai and add GLM-5.2 + Qwen3.8-Max

Rename providers/scx to providers/scx-ai so the registry id matches the
provider id SCX uses elsewhere (theopenco/llmgateway).

Add two models already served on https://api.scx.ai/v1:
- GLM-5.2 (base_model zhipuai/glm-5.2)
- Qwen3.8-Max (base_model alibaba/qwen3.8-max)

Correct MiniMax-M2.7 context from 192000 to the measured 196608.

* fix(scx-ai): narrow reasoning_options to measured controls, document 64k output

Address review on #4692:
- GLM-5.2: minimal returns zero reasoning content (n=4), so it is the off
  control, not a level; low/medium/high are indistinguishable. Narrow to
  none/high/max.
- Qwen3.8-Max: minimal/low/medium form one band, xhigh separates. Narrow to
  the Alibaba effective set plus the verified none off control.
- MiniMax-M2.7: explain why output (64000) sits below the enforced context
  ceiling (196608) instead of matching it.

* fix(scx-ai): author interleaved side channels, correct MiniMax output and Qwen limits

Addresses the review findings on #4692, all re-verified against the live
https://api.scx.ai/v1 endpoint.

- GLM-5.2, Qwen3.8-Max, gpt-oss-120b: add [interleaved] field =
  "reasoning_content". All three return thinking on that field.
- MiniMax-M2.7: the side channel here is named `reasoning`, which is not one
  of the two schema-permitted field names, so it is declared as the bare
  `interleaved = true` instead.
- MiniMax-M2.7: limit.output 64_000 -> 196_608. There is no separate output
  cap on this host, only the shared budget (max_tokens 196540 -> 200 OK,
  196608 -> 400 "maximum context length is 196608 tokens"). SCX's own entry
  in theopenco/llmgateway also carries maxOutput 196608. This makes MiniMax
  consistent with gpt-oss-120b, where output already equals context.
- Qwen3.8-Max: drop pdf from modalities.input. It is inherited from the base
  entry but is not served here -- both the file_url and file_data forms are
  rejected with "The current model does not support PDF file input". Video
  is kept: a frame sequence is accepted and described, and an under-length
  one is rejected with a video-specific frame-count error.
- Qwen3.8-Max: add limit.input = 983_616, the enforced input ceiling
  ("Range of input length should be [1, 983616]"), which is below the 1M
  context inherited from the base entry. GLM-5.2's equivalent ceiling is
  1048576, above its published 1M context, so its limits are left inherited.
- Qwen3.8-Max: add cost.cache_write = 2.5, matching the cacheWriteInputPrice
  SCX maintains in theopenco/llmgateway and the alibaba first-party entry.
2026-08-18 10:25:23 -05:00
David Knaack e4be784056 chore(sap-ai-core): add Gemini Embedding 2 and Mistral Medium model definitions (#4962) 2026-08-18 10:22:49 -05:00
opencode-agent[bot] a87e38ea0a chore(sync): update OpenRouter model catalog (#4968)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 14:27:04 +00:00
opencode-agent[bot] 302b6eb146 chore(sync): update Eden AI model catalog (#4967)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 14:27:01 +00:00
opencode-agent[bot] 2bb5c23b5d chore(sync): update Kilo model catalog (#4969)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 14:26:58 +00:00
opencode-agent[bot] 2a1a2338d8 chore(sync): update OpenRouter model catalog (#4966)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 13:31:27 +00:00
opencode-agent[bot] 8355ecfb57 chore(sync): update LLM Gateway model catalog (#4964)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 11:25:45 +00:00
opencode-agent[bot] 79ade68781 chore(sync): update Charm Hyper model catalog (#4963)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 11:25:31 +00:00
opencode-agent[bot] 4890e733e6 chore(sync): update OpenRouter model catalog (#4959)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 10:25:51 +00:00
opencode-agent[bot] 215e0561a6 chore(sync): update Kilo model catalog (#4958)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 09:27:04 +00:00
opencode-agent[bot] 710ca9f9a1 chore(sync): update OpenRouter model catalog (#4957)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 09:26:46 +00:00
opencode-agent[bot] 5a2a7efb9c chore(sync): update Kilo model catalog (#4956)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 08:27:17 +00:00
opencode-agent[bot] 025f9e2931 chore(sync): update OpenRouter model catalog (#4955)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 08:26:58 +00:00
opencode-agent[bot] bdcd2fb9a5 chore(sync): update OpenRouter model catalog (#4954)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 07:28:23 +00:00
opencode-agent[bot] 3a260db64d chore(sync): update NanoGPT model catalog (#4953)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 07:28:02 +00:00
opencode-agent[bot] 69b464ca71 chore(sync): update OpenRouter model catalog (#4952)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 06:27:12 +00:00
opencode-agent[bot] 5c9a310469 chore(sync): update Eden AI model catalog (#4950)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 05:26:11 +00:00
opencode-agent[bot] 2753486219 chore(sync): update Vercel AI Gateway model catalog (#4949)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 05:26:08 +00:00
opencode-agent[bot] 3bb30a8d2b fix(baseten): preserve authored output limits (#4948)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 00:07:07 -05:00
opencode-agent[bot] 98b7e9a363 chore(sync): update OpenRouter model catalog (#4946)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 04:27:28 +00:00
opencode-agent[bot] 7bb8f84178 chore(sync): update Kilo model catalog (#4945)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 04:27:12 +00:00
opencode-agent[bot] 9229219514 chore(sync): update OpenRouter model catalog (#4943)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 03:31:34 +00:00
opencode-agent[bot] e1e9619808 chore(sync): update Kilo model catalog (#4944)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 03:31:16 +00:00
stanislav-kosmik be01f6e626 feat(providers): add Kosmik Compute (#4869)
* feat(providers): add Kosmik Compute

* fix(providers): address Kosmik review

* fix(providers): cite Kosmik pricing source

* fix(providers): align Kosmik Qwen3.8 reasoning efforts

Advertise the Qwen3.8 canonical public effort surface none/low/medium/xhigh
(matching the Qwen3.8 lab/same-model peer surface) instead of the GPT-style
none/low/medium/high. xhigh is the live-verified top tier; high remains a
backward-compatible legacy alias accepted by the router but is no longer
advertised as the canonical Qwen3.8 effort.

---------

Co-authored-by: Codex <codex@openai.com>
2026-08-17 22:30:56 -05:00
opencode-agent[bot] 5b26c821e7 chore(sync): update Cloudflare Workers AI model catalog (#4941)
* chore(sync): update Cloudflare Workers AI model catalog

* fix(cloudflare-workers-ai): add Qwen reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 22:30:02 -05:00
opencode-agent[bot] 44101900a9 chore(sync): update Deep Infra model catalog (#4933)
* chore(sync): update Deep Infra model catalog

* fix(deepinfra): add Qwen reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 22:29:46 -05:00
opencode-agent[bot] 5d7c2a1eeb chore(sync): update Vercel AI Gateway model catalog (#4914)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 22:16:00 -05:00
opencode-agent[bot] bbf775b23b chore(sync): update Kilo model catalog (#4942)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 02:39:40 +00:00
opencode-agent[bot] 59fd6d92c6 chore(sync): update Venice model catalog (#4940)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 02:39:28 +00:00
opencode-agent[bot] 3097d1df0d chore(sync): update OpenRouter model catalog (#4939)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 02:39:25 +00:00
opencode-agent[bot] 8b78b4eecb chore(sync): update Merge Gateway model catalog (#4936)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 01:49:43 +00:00
opencode-agent[bot] 2a3a284eb3 chore(sync): update OpenRouter model catalog (#4935)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 01:49:16 +00:00
opencode-agent[bot] 116345661c chore(sync): update Kilo model catalog (#4937)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 01:49:13 +00:00
choccho af4bc2ee9e Add Sakana Namazu model (#4608)
* Add Sakana Namazu model

* Update Sakana AI lab description

* Restore Sakana AI lab description

* Delete provider section in sakana-namazu.toml

Removed provider section from sakana-namazu.toml

---------

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-08-17 20:16:48 -05:00
opencode-agent[bot] f3b97fbbf1 chore(sync): update OpenRouter model catalog (#4931)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 00:28:46 +00:00
opencode-agent[bot] ca7e8d0fa8 chore(sync): update Kilo model catalog (#4932)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-18 00:28:27 +00:00
opencode-agent[bot] 50c74c4aff chore(sync): update Baseten model catalog (#4930)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 23:25:30 +00:00
opencode-agent[bot] 76a31b5b0a chore(sync): update OpenRouter model catalog (#4929)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 23:25:08 +00:00
opencode-agent[bot] 5e4b4028fe chore(sync): update Eden AI model catalog (#4927)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 22:25:31 +00:00
opencode-agent[bot] 841e097582 chore(sync): update OpenRouter model catalog (#4926)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 22:25:28 +00:00
opencode-agent[bot] 5d3ce02e32 chore(sync): update Hugging Face model catalog (#4907)
* chore(sync): update Hugging Face model catalog

* fix(huggingface): add Qwen VL reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 17:06:11 -05:00
Pranav 96d20d58e7 feat(provider): add Arcee (#4924) 2026-08-17 16:56:56 -05:00
opencode-agent[bot] 804894e1db fix(sync): inherit Vercel fast model reasoning options (#4925)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 16:56:42 -05:00
opencode-agent[bot] e3e3283787 chore(sync): update OpenRouter model catalog (#4923)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 16:39:38 -05:00
opencode-agent[bot] de6858e0d6 chore(sync): update Charm Hyper model catalog (#4921)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 21:25:23 +00:00
opencode-agent[bot] b6771cc37f chore(sync): update Eden AI model catalog (#4919)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 21:25:21 +00:00
opencode-agent[bot] acf80aaab0 chore(sync): update OpenRouter model catalog (#4918)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 20:25:39 +00:00
opencode-agent[bot] 66ab3e67be chore(sync): update Deep Infra model catalog (#4916)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 20:25:37 +00:00
opencode-agent[bot] 60099b372f chore(sync): update Kilo model catalog (#4920)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 20:25:30 +00:00
opencode-agent[bot] 88f48da530 chore(sync): update Charm Hyper model catalog (#4917)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 19:25:49 +00:00
opencode-agent[bot] f65d8abe36 chore(sync): update Kilo model catalog (#4913)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 19:25:47 +00:00
opencode-agent[bot] f6298a9edb chore(sync): update NanoGPT model catalog (#4915)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 19:25:45 +00:00
opencode-agent[bot] cdd585e1a1 chore(sync): update OpenRouter model catalog (#4911)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 18:26:41 +00:00
opencode-agent[bot] 5781565301 chore(sync): update NanoGPT model catalog (#4912)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 18:26:40 +00:00
opencode-agent[bot] 734f5bffce chore(sync): update LLM Gateway model catalog (#4910)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 17:25:50 +00:00
opencode-agent[bot] 70f0f27852 chore(sync): update Merge Gateway model catalog (#4909)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 17:25:48 +00:00
opencode-agent[bot] 90eb22c80f chore(sync): update Charm Hyper model catalog (#4908)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 17:25:46 +00:00
Jérôme Benoit 5984fc21b5 feat(sap-ai-core): add GPT-5.6 models (#4897) 2026-08-17 11:51:20 -05:00
Charlie Gleason 3d5735ec1b fix(cloudflare-ai-gateway): use dotted Anthropic 4.x ids and correct gpt-4o pricing (#4867)
Rename the seven Anthropic 4.x model files from hyphenated to dotted ids
(claude-haiku-4-5 -> claude-haiku-4.5, etc.) to match Cloudflare's canonical
catalog (ai/catalog/models returns dotted model_id) and the convention every
other relay in the repo already uses (e.g. openrouter). The dashed ids broke
downstream consumers that copy these ids verbatim.

Also correct gpt-4o and gpt-4o-mini pricing to the live catalog values
(gpt-4o 1.25/5/0.625; gpt-4o-mini 0.075/0.3/0.0375).
2026-08-17 11:44:55 -05:00
C.C. c15d5a232f provider(vivgrid): add glm-5.3 (#4866) 2026-08-17 11:44:36 -05:00
Jianyu Chen a6d20f0b62 feat(providers): add Jalapeno Cloud (#4880)
Co-authored-by: jychen_magik123 <jychen@magikcompute.ai>
2026-08-17 11:44:14 -05:00
Tejush 22f6b3b4cd chore(sync): update CrofAI model catalog (#4890)
* update crof glm5.2 pricing

* conflicts

* conflicts

---------

Co-authored-by: tejush <mac@MacBook-Air.local>
2026-08-17 11:43:13 -05:00
Jaber Jaber 1eb154a265 fix(runinfra): JSON mode is live on Qwen3.8 2.4T, drop the structured_output override (#4884) 2026-08-17 11:43:04 -05:00
opencode-agent[bot] 4a6dfdcd49 chore(sync): update Cortecs model catalog (#4894)
* chore(sync): update Cortecs model catalog

* fix(cortecs): add Qwen3.8 reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 11:42:48 -05:00
Seb Duerr 9b3d6ad051 chore(cerebras): remove GLM 4.7 (#4902) 2026-08-17 11:34:12 -05:00
opencode-agent[bot] 714fb03778 chore(sync): update Vercel AI Gateway model catalog (#4905)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 16:25:33 +00:00
opencode-agent[bot] c7fd296f6f chore(sync): update Eden AI model catalog (#4904)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 16:25:32 +00:00
opencode-agent[bot] 1d2c7c71b6 chore(sync): update OpenRouter model catalog (#4903)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 16:25:31 +00:00
opencode-agent[bot] 2008ed1098 chore(sync): update Kilo model catalog (#4901)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 15:25:51 +00:00
opencode-agent[bot] 07a555ace3 chore(sync): update Kilo model catalog (#4899)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 14:25:39 +00:00
opencode-agent[bot] 9d1229b3e9 chore(sync): update OpenRouter model catalog (#4898)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 14:25:34 +00:00
opencode-agent[bot] 0c205a6277 chore(sync): update Kilo model catalog (#4896)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 13:29:01 +00:00
opencode-agent[bot] 18f2d1b474 chore(sync): update OpenRouter model catalog (#4895)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 13:28:59 +00:00
opencode-agent[bot] a57bc104f9 chore(sync): update Charm Hyper model catalog (#4893)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 12:26:36 +00:00
opencode-agent[bot] f63bd788b1 chore(sync): update NanoGPT model catalog (#4889)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 11:25:13 +00:00
opencode-agent[bot] aaf7188cb5 chore(sync): update NanoGPT model catalog (#4888)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 10:26:21 +00:00
opencode-agent[bot] 7f36d7b7f0 chore(sync): update OpenRouter model catalog (#4887)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 10:26:16 +00:00
opencode-agent[bot] b99ab75d78 chore(sync): update Kilo model catalog (#4886)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 10:26:15 +00:00
opencode-agent[bot] 21696e4127 chore(sync): update Inceptron model catalog (#4883)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 09:27:36 +00:00
opencode-agent[bot] 4425671a94 chore(sync): update Kilo model catalog (#4882)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 09:27:31 +00:00
opencode-agent[bot] 274e1adac9 chore(sync): update OpenRouter model catalog (#4881)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 09:27:25 +00:00
opencode-agent[bot] 4d038084dd chore(sync): update OpenRouter model catalog (#4878)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 07:36:29 +00:00
opencode-agent[bot] 7aa4358281 chore(sync): update Kilo model catalog (#4877)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 07:36:27 +00:00
opencode-agent[bot] 49da05ac67 chore(sync): update OpenRouter model catalog (#4876)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 06:27:44 +00:00
opencode-agent[bot] b8910b7afe chore(sync): update Vercel AI Gateway model catalog (#4871)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 06:27:40 +00:00
opencode-agent[bot] 334e4cc9d7 chore(sync): update Kilo model catalog (#4875)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 06:27:37 +00:00
opencode-agent[bot] 54d990aded chore(sync): update Cloudflare Workers AI model catalog (#4874)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 06:27:33 +00:00
opencode-agent[bot] 7a5fb8fe4c chore(sync): update OpenRouter model catalog (#4873)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 05:26:53 +00:00
opencode-agent[bot] 9fcba0bdf9 chore(sync): update Eden AI model catalog (#4872)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 05:26:52 +00:00
opencode-agent[bot] d274fb1c5c chore(sync): update Kilo model catalog (#4870)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 05:26:48 +00:00
opencode-agent[bot] 9f60d20e07 chore(sync): update Vercel AI Gateway model catalog (#4859)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): add reasoning options for new models

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-17 00:08:22 -05:00
opencode-agent[bot] d08348f355 chore(sync): update OpenRouter model catalog (#4868)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 04:27:50 +00:00
opencode-agent[bot] 12bbfd88ca chore(sync): update CrossModel model catalog (#4865)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 03:33:04 +00:00
opencode-agent[bot] a09824df0a chore(sync): update Kilo model catalog (#4864)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 02:40:23 +00:00
opencode-agent[bot] 42d06c3fcd chore(sync): update OpenRouter model catalog (#4863)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 02:40:21 +00:00
opencode-agent[bot] 3c2a513958 chore(sync): update OpenRouter model catalog (#4862)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 01:51:34 +00:00
opencode-agent[bot] b75c39d0fd chore(sync): update Kilo model catalog (#4857)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 00:28:01 +00:00
opencode-agent[bot] f97aa98e00 chore(sync): update OpenRouter model catalog (#4861)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-17 00:27:55 +00:00
opencode-agent[bot] 87f9c99dea chore(sync): update OpenRouter model catalog (#4858)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 23:24:21 +00:00
Jaber Jaber d5c0a31ac0 feat(provider): add RunInfra (#4793)
* feat(provider): add RunInfra

OpenAI-compatible hosted inference API at https://api.runinfra.ai/v1 with four open-weights models, override-only against the existing alibaba, deepseek, and nvidia lab entries.

* fix(runinfra): measured reasoning controls per model, effort where the dial is live

Re-probed every effort level at temperature 0 with repeats per the review bot's standard: the 2.4T has a graded dial (low 113, medium 140, xhigh 89 which is the default; none rejected with 400), DeepSeek folds high and xhigh to max with none and medium proven distinct, the 27B proves none and medium against a twice-identical baseline, and Nemotron's deltas stay within its own run variance so it keeps the toggle claim only.

* fix(runinfra): effort sets pinned to three-repeat wire measurements

27B: none/low/medium/xhigh (high and max are rejected upstream with a 400 naming the supported set). DeepSeek: none/low/max (medium measured identical to low; high and xhigh fold to max, identical to omitted).
2026-08-16 17:26:30 -05:00
opencode-agent[bot] a3de4fa1bd chore(sync): update OpenRouter model catalog (#4856)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 22:24:41 +00:00
opencode-agent[bot] 90addf91ac chore(sync): update Deep Infra model catalog (#4843)
* chore(sync): update Deep Infra model catalog

* fix(deepinfra): add Qwen3.8 reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-16 17:02:13 -05:00
opencode-agent[bot] ed817257d4 chore(sync): update Hugging Face model catalog (#4848)
* chore(sync): update Hugging Face model catalog

* fix: add Qwen3.8 reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-16 17:02:02 -05:00
opencode-agent[bot] 215f91d1b1 chore(sync): update Eden AI model catalog (#4844)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 17:00:29 -05:00
opencode-agent[bot] 17da18dd97 fix(sync): accept OpenRouter time-window pricing overrides (#4850)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-08-16 16:59:50 -05:00
opencode-agent[bot] b96acb3dbf chore(sync): update NanoGPT model catalog (#4853)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 21:24:34 +00:00
opencode-agent[bot] 2afda28e98 chore(sync): update Kilo model catalog (#4852)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 21:24:33 +00:00
opencode-agent[bot] 2c27444375 chore(sync): update Vercel AI Gateway model catalog (#4851)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 21:24:31 +00:00
knowhy 5a77bf175f feat(llmtr): complete chat-route coverage with 27 remaining models (#4817)
* feat(llmtr): complete chat-route coverage with 27 remaining models

Adds the LLMTR chat routes not covered by #3038. Provider entries are
override-only on top of models/ lab metadata; six lab entries are added
where the underlying model had no models/<lab>/ file yet.

Costs and context windows come from https://llmtr.com/api/models.
reasoning_options were measured against POST /v1/chat/completions rather
than inferred: the gateway reports its per-model thinking control in the
400 body for an unsupported reasoning_effort value.

Models whose lab facts could not be established from the lab's own
documentation or an existing first-party entry are deliberately left out.

* fix(llmtr): re-measure reasoning controls across every request surface

Review feedback: reasoning_effort is only one of the surfaces this gateway
forwards, so an effort-only probe cannot justify reasoning_options = [].
Re-probed every entry across nine request shapes (reasoning_effort top-level
and nested, reasoning true/false, :think and :fast suffixes,
reasoning.max_tokens, thinkingConfig.thinkingBudget, thinking_budget,
enable_thinking, thinking.type), temperature 0, each result reproduced.

The real control on Qwen routes is Alibaba's native enable_thinking, which the
gateway forwards. Seven routes previously marked [] are genuine toggles:
qwen-plus, qwen-flash, qwen3-vl-plus, qwen3.5-plus, qwen3.5-397b-a17b,
qwen3.6-plus and qwen3-max. qwen3-max additionally overrides reasoning = true,
since it emits reasoning on demand despite the base entry saying otherwise.

gemini-2.5-flash-lite, mimo-v2.5, mimo-v2.5-pro and sonar-deep-research keep []
after testing all nine surfaces; each now records that evidence in its header.
The perplexity low|medium|high|fast|pro|auto suffixes are search_type controls,
not reasoning - the gateway names the parameter in its own rejection.

Wire-path comments moved into the leading header block on all ten files that
carry reasoning_options, since sync strips mid-file comments.

Drops qwen3.6-27b-free: its reasoning surface could not be measured because the
key's daily free-model quota was exhausted, and an unverified [] is exactly what
this change is correcting.

* llmtr: align solar-pro2 reasoning effort with the Upstage baseline

* llmtr: align solar-pro3 reasoning effort with the Upstage baseline

* llmtr: add measured thinking_budget control to qwen/qwen-flash

* llmtr: add measured thinking_budget control to qwen/qwen-plus

* llmtr: add measured thinking_budget control to qwen/qwen3-max

* llmtr: add measured thinking_budget control to qwen/qwen3-vl-plus

* llmtr: add measured thinking_budget control to qwen/qwen3.5-397b-a17b

* llmtr: add measured thinking_budget control to qwen/qwen3.5-plus

* llmtr: add measured thinking_budget control to qwen/qwen3.6-flash

* llmtr: add measured thinking_budget control to qwen/qwen3.6-plus

* llmtr: add measured thinking_budget control to qwen/qwen3.7-plus

* llmtr: align solar-pro4 effort wire comment with the measured field
2026-08-16 16:00:40 -05:00
knowhy fa628e068d llmtr: drop retired ids and correct Turkey-hosted model data (#4813)
* llmtr: correct gemma-4 context, pricing, modalities and tool calling

* llmtr: pin qwen3-6-35b tool_call to the measured value

* llmtr: correct magibu-11b-v8 pricing

* llmtr: mark medgemma-4b deprecated and correct its output cap

* llmtr: drop sincap, retired upstream on 2026-08-04

* llmtr: replace trendyol-7b with the model it now aliases

* llmtr: add trendyol-asure-12b

* llmtr: add muse-glimmer-30b-tr

* llmtr: tidy muse-glimmer-30b-tr source comment

* llmtr: point muse-glimmer-30b-tr at the Meta lab entry

* trendyol: add Asure 12B lab entry

* llmtr: point trendyol-asure-12b at the new lab entry
2026-08-16 15:53:21 -05:00
opencode-agent[bot] 5e089c5cb6 chore(sync): allow Eden AI reasoning auto-merge (#4849)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-16 15:53:05 -05:00
opencode-agent[bot] b29bebd641 chore(sync): update Charm Hyper model catalog (#4847)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:52:57 -05:00
opencode-agent[bot] cb90a342a0 chore(sync): update Cortecs model catalog (#4845)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:42:39 -05:00
opencode-agent[bot] 4f3a3664fa fix(sync): trust Charm Hyper reasoning metadata (#4840)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-16 15:24:57 -05:00
opencode-agent[bot] b0281112de chore(sync): update xAI model catalog (#4846)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 20:24:46 +00:00
opencode-agent[bot] 8910812536 chore(sync): update Venice model catalog (#4842)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 20:24:44 +00:00
opencode-agent[bot] 784cb489b9 chore(sync): update Vercel AI Gateway model catalog (#4841)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 20:24:40 +00:00
opencode-agent[bot] eb86f5d4e9 chore(sync): update CrossModel model catalog (#4811)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:24:24 -05:00
opencode-agent[bot] bc6a51d6d1 chore(sync): update Eden AI model catalog (#4799)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:24:12 -05:00
Nabs 0959738cda feat(amazon-bedrock): add global GPT-5.6 inference profiles (#4827) 2026-08-16 15:23:47 -05:00
MicroHEROX fe4c72a591 feat: add AMD provider (Token Factory / Radeon Cloud) (#4828)
* test write access

* feat: add AMD Token Factory provider logo

* feat: add AMD Token Factory DeepSeek-V4-Flash model
2026-08-16 15:23:29 -05:00
opencode-agent[bot] 439380165c chore(sync): update Chutes model catalog (#4830)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:23:15 -05:00
opencode-agent[bot] 4ff6664009 chore(sync): update Charm Hyper model catalog (#4839)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:23:03 -05:00
github-actions[bot] c9e64d4b82 fix: Add the Qwen: Qwen3.8 2.4T A95B model (#4797)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-16 15:22:05 -05:00
Zain Hasan 078ee9adf1 [Together AI] add dsv4 0813 (#4807) 2026-08-16 15:21:53 -05:00
github-actions[bot] 309069d9bd fix: [missing-model] xai: grok-imagine-image-2.0 (#4805)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-16 15:21:01 -05:00
Prashanth-InferX 295e59c6fd fix(inferx): clean up retired models and re-sync active catalog (#3373)
* fix(inferx): remove stale/retired model TOMLs

* fix(inferx): rename model TOMLs to match InferX's exact dashboard model names

* feat(inferx): add 9 missing models currently live on InferX dashboard

* fix(inferx): correct schema validation errors in new model TOMLs (base_model links, reasoning_options, family enums, missing output limits)

* fix(inferx): remove unverified reasoning_options, document the one confirmed toggle

Per review feedback: reasoning_options=[{type=toggle}] was applied to
6 models (Agents-A1, Hy3-295B-NVFP4, Ornith-1.0-35B-FP8,
Step-3.7-Flash-NVFP4, deepseek-v4-flash, mimo-v25) without individual
verification. Only Qwen3.6-35B-A3B-FP8 was actually tested against
InferX's live API (chat_template_kwargs.enable_thinking).

- Set reasoning_options = [] on the 6 unverified models
- Added a sourced comment documenting the one verified toggle mechanism

* fix(inferx): add missing [cost] blocks, fix Devstral output limit

Per review feedback:
- Added [cost] input=0/output=0 to all 10 new models, matching the
  pattern used by every existing InferX entry (still free tier)
- Fixed Devstral-2-123B-Instruct-2512-int4-AutoRound: context override
  (128_000) left output inherited at 262_144 from base_model, exceeding
  context. Added explicit output=128_000 override to match.

* fix(inferx): document verified reasoning toggle for deepseek-v4-flash

Tested both reasoning_effort (low/high — no measurable behavior
difference, ~2% token variance) and chat_template_kwargs.enable_thinking
(toggle — confirmed working, reasoning drops to null and completion
tokens drop ~70% when disabled). InferX supports the toggle mechanism,
not upstream DeepSeek's effort levels.

* fix(inferx): use preview's documented output limit for unpublished Hy3-295B-NVFP4

Model isn't live on InferX yet, so limit.output can't be verified via
API test. Using tencent/hy3-preview's documented 64_000 (same 256k
context) as a labeled estimate rather than context=output guess, until
real values can be confirmed post-publish.

* fix(inferx): correct verified reasoning/output limits based on live tests

* fix(inferx): remove unpublished Hy3, correct embedding output limit

* fix(inferx): document verified 27B toggle, move rationale comments to file headers

* fix(inferx): remove unpublished Step-3.7-Flash-NVFP4, verify output limits for deepseek-v4-flash and mimo-v25

* fix(inferx): restore deepseek-v4-flash reasoning toggle documentation lost in previous edit
2026-08-16 15:17:26 -05:00
opencode-agent[bot] 336df99c4d chore(sync): update Kilo model catalog (#4838)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 19:24:23 +00:00
opencode-agent[bot] dd29b21ab2 chore(sync): update Charm Hyper model catalog (#4833)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 18:25:33 +00:00
opencode-agent[bot] 1e150579d8 chore(sync): update OpenRouter model catalog (#4835)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 16:25:20 +00:00
opencode-agent[bot] 47c8d83d27 chore(sync): update Kilo model catalog (#4837)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 16:25:17 +00:00
Jack de7194b4ec chore(opencode-go): update DeepSeek V4 pricing 2026-08-17 00:00:56 +08:00
opencode-agent[bot] 44ecd55d51 chore(sync): update Kilo model catalog (#4836)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 15:24:37 +00:00
opencode-agent[bot] 9ed29725be chore(sync): update OpenRouter model catalog (#4834)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 14:24:51 +00:00
opencode-agent[bot] 38cf43f607 chore(sync): update Ofox model catalog (#4829)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 13:26:24 +00:00
opencode-agent[bot] 5e4f918534 chore(sync): update Kilo model catalog (#4832)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 13:26:21 +00:00
opencode-agent[bot] e1e132767a chore(sync): update NanoGPT model catalog (#4831)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 12:26:35 +00:00
opencode-agent[bot] 529277097c chore(sync): update Kilo model catalog (#4823)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 12:26:29 +00:00
opencode-agent[bot] cd41a1fc15 chore(sync): update OpenRouter model catalog (#4826)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 11:24:13 +00:00
opencode-agent[bot] 414ef36897 chore(sync): update NanoGPT model catalog (#4824)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 11:24:11 +00:00
opencode-agent[bot] 4c56920328 chore(sync): update Chutes model catalog (#4825)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 10:24:56 +00:00
opencode-agent[bot] d22f20c9ff chore(sync): update Vercel AI Gateway model catalog (#4822)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 10:24:52 +00:00
opencode-agent[bot] 2d8dc79c06 chore(sync): update Ofox model catalog (#4821)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 10:24:50 +00:00
opencode-agent[bot] 257686dccc chore(sync): update Kilo model catalog (#4816)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 09:25:36 +00:00
opencode-agent[bot] 5e52053633 chore(sync): update NanoGPT model catalog (#4815)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 08:25:45 +00:00
opencode-agent[bot] fe6fae037a chore(sync): update OpenRouter model catalog (#4814)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 08:25:43 +00:00
Jack 9d4b5725df fix(opencode-go): default Qwen models to OpenAI-compatible 2026-08-16 16:11:47 +08:00
opencode-agent[bot] a01b0706d4 chore(sync): update OpenRouter model catalog (#4812)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 07:26:31 +00:00
opencode-agent[bot] d60751f6c8 chore(sync): update OpenRouter model catalog (#4810)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 06:26:36 +00:00
Jack e07607be17 Merge pull request #4809 from anomalyco/deepseek-standard-price
chore(opencode-go): end DeepSeek Flash promotion
2026-08-16 14:21:40 +08:00
Jack 22f628563c chore(opencode-go): end DeepSeek Flash promotion 2026-08-16 14:17:59 +08:00
opencode-agent[bot] c4b23de112 chore(sync): update Kilo model catalog (#4808)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 05:25:46 +00:00
opencode-agent[bot] 94dd914b9b chore(sync): update OpenRouter model catalog (#4802)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 05:25:45 +00:00
opencode-agent[bot] bdd7029f3a chore(sync): update xAI model catalog (#4804)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 04:26:58 +00:00
opencode-agent[bot] fabf264da6 chore(sync): update Kilo model catalog (#4806)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 04:26:50 +00:00
opencode-agent[bot] c7516b5f79 chore(sync): update DigitalOcean model catalog (#4803)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 03:32:52 +00:00
opencode-agent[bot] 9f2c9dcd61 chore(sync): update Kilo model catalog (#4801)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 03:32:48 +00:00
opencode-agent[bot] 4a2180db0d chore(sync): update EmpirioLabs AI model catalog (#4800)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 03:32:47 +00:00
opencode-agent[bot] 2b82af1117 chore(sync): update DigitalOcean model catalog (#4753)
* chore(sync): update DigitalOcean model catalog

* fix(digitalocean): add DeepSeek reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-15 22:16:39 -05:00
opencode-agent[bot] ac5495f5a1 chore(sync): update Deep Infra model catalog (#4748)
* chore(sync): update Deep Infra model catalog

* fix(deepinfra): add DeepSeek reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-15 22:14:25 -05:00
Sun Zhigang 0f01afe13f feat: add DeepSeek V4 Pro 0813 to Alibaba plans (#4771)
* feat: add DeepSeek V4 Pro 0813 to Alibaba plans

* fix: align China DeepSeek V4 reasoning options
2026-08-15 22:14:11 -05:00
Adam Dalloul 51fdc3e24f feat(alibaba): add Qwen3.8 27B canonical metadata (#4758) 2026-08-15 22:13:48 -05:00
Adam Dalloul 8e804a4ee8 feat(sync): auto-resolve EmpirioLabs models from canonical metadata (#4757)
* feat(sync): auto-resolve EmpirioLabs models from canonical metadata

The EmpirioLabs adapter only tried a few family prefixes, so models
with existing lab TOMLs were skipped. Resolve via family prefixes,
version-dot slugs, unique filenames, and dated/version suffixes.
Treat EmpirioLabs as a reviewed reasoning provider so hourly syncs
can auto-merge factored catalog updates.

* fix(sync): use mistralai prefix for EmpirioLabs Mistral ids

* test(sync): stop asserting qwen3-8-27b has no canonical
2026-08-15 22:13:23 -05:00
opencode-agent[bot] dc99d02482 chore(sync): update Charm Hyper model catalog (#4752)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 22:12:45 -05:00
Wassel Alazhar 47c637c213 umans-ai + coding-plan: add DeepSeek V4 Pro (0813 pay-per-token release) (#4788) 2026-08-15 22:12:00 -05:00
William Varmus da60a23efa feat: add SCNet Token Plan provider (#4791) 2026-08-15 22:11:38 -05:00
opencode-agent[bot] 3ccdbbf304 chore(sync): update Kilo model catalog (#4795)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 00:27:53 +00:00
opencode-agent[bot] f8ce5b98bc chore(sync): update OpenRouter model catalog (#4794)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-16 00:27:50 +00:00
opencode-agent[bot] b73eba5ac9 chore(sync): update NanoGPT model catalog (#4792)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 21:24:28 +00:00
opencode-agent[bot] 0b919ad6be chore(sync): update NanoGPT model catalog (#4789)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 19:24:39 +00:00
opencode-agent[bot] 8456bd7dfb chore(sync): update Kilo model catalog (#4787)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 18:25:56 +00:00
opencode-agent[bot] 07def1b0d3 chore(sync): update OpenRouter model catalog (#4786)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 18:25:52 +00:00
opencode-agent[bot] 6fc7c59301 chore(sync): update OpenRouter model catalog (#4784)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 17:24:21 +00:00
opencode-agent[bot] 87e77c36c3 chore(sync): update Kilo model catalog (#4783)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 17:24:18 +00:00
opencode-agent[bot] 65db14442d chore(sync): update Kilo model catalog (#4779)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 16:25:16 +00:00
opencode-agent[bot] 9a01b01fb0 chore(sync): update NanoGPT model catalog (#4782)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 15:24:44 +00:00
opencode-agent[bot] 8ef7063be8 chore(sync): update OpenRouter model catalog (#4780)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 15:24:43 +00:00
opencode-agent[bot] c53f22b775 chore(sync): update Requesty model catalog (#4781)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 15:24:37 +00:00
opencode-agent[bot] 3f2eb4fcf7 chore(sync): update Kilo model catalog (#4779)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 14:24:42 +00:00
opencode-agent[bot] 05b0d28004 chore(sync): update OpenRouter model catalog (#4778)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 13:26:05 +00:00
opencode-agent[bot] a95407f55d chore(sync): update OpenRouter model catalog (#4777)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 12:26:18 +00:00
opencode-agent[bot] a8c294c7a4 chore(sync): update NanoGPT model catalog (#4776)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 12:26:17 +00:00
opencode-agent[bot] bff4122780 chore(sync): update NanoGPT model catalog (#4775)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 11:24:21 +00:00
opencode-agent[bot] 8e4b34255e chore(sync): update OpenRouter model catalog (#4774)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 11:24:20 +00:00
opencode-agent[bot] d7292c9992 chore(sync): update NanoGPT model catalog (#4773)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 10:24:49 +00:00
opencode-agent[bot] 75422445e5 chore(sync): update OpenRouter model catalog (#4772)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 10:24:44 +00:00
opencode-agent[bot] 8e0886e5f9 chore(sync): update Kilo model catalog (#4769)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 09:25:28 +00:00
opencode-agent[bot] 4b86b900f0 chore(sync): update OpenRouter model catalog (#4770)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 09:25:26 +00:00
opencode-agent[bot] adc8b379a8 chore(sync): update OpenRouter model catalog (#4768)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 08:25:32 +00:00
opencode-agent[bot] 1b9f7f954b chore(sync): update Kilo model catalog (#4767)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 07:26:12 +00:00
opencode-agent[bot] 12997571fc chore(sync): update OpenRouter model catalog (#4766)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 07:26:09 +00:00
opencode-agent[bot] 61168416c8 chore(sync): update OpenRouter model catalog (#4765)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 06:26:26 +00:00
opencode-agent[bot] 613423decf chore(sync): update Kilo model catalog (#4764)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 06:26:22 +00:00
opencode-agent[bot] 38b10233d0 chore(sync): update Kilo model catalog (#4763)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 05:25:15 +00:00
opencode-agent[bot] 17eb6c86e3 chore(sync): update OpenRouter model catalog (#4761)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 05:25:07 +00:00
opencode-agent[bot] fcac093772 chore(sync): update OpenRouter model catalog (#4760)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 04:26:00 +00:00
opencode-agent[bot] 978733d445 chore(sync): update Kilo model catalog (#4756)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 03:27:54 +00:00
opencode-agent[bot] 645f9dce09 chore(sync): update OpenRouter model catalog (#4759)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 03:27:44 +00:00
opencode-agent[bot] 68bde6c590 chore(sync): update OpenRouter model catalog (#4755)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 02:36:48 +00:00
opencode-agent[bot] 0302d1927e chore(sync): update OpenRouter model catalog (#4750)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 01:48:39 +00:00
opencode-agent[bot] 36ff7e7872 chore(sync): update Kilo model catalog (#4751)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 01:48:31 +00:00
opencode-agent[bot] 2fc8b60fae chore(sync): update Kilo model catalog (#4749)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-15 00:28:17 +00:00
opencode-agent[bot] 525c2507db chore(sync): update Kilo model catalog (#4747)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 23:24:50 +00:00
opencode-agent[bot] bca9a4a666 chore(sync): update Vercel AI Gateway model catalog (#4746)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 23:24:48 +00:00
opencode-agent[bot] 1f3b0475c9 chore(sync): update Cloudflare Workers AI model catalog (#4740)
* chore(sync): update Cloudflare Workers AI model catalog

* fix(cloudflare-workers-ai): factor DeepSeek models

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-14 18:03:19 -05:00
opencode-agent[bot] 91aae6c232 chore(sync): update Eden AI model catalog (#4569)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 18:01:40 -05:00
rakshith1928 f97df19af4 feat(aihubmix): add gemini-3.7-flash model configuration (#4735)
* feat(gemini): add gemini-3.7-flash model configuration

* review and address bot suggestions
2026-08-14 17:59:16 -05:00
opencode-agent[bot] 369b6abce8 chore(sync): update EmpirioLabs AI model catalog (#4741)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 17:59:07 -05:00
rakshith1928 29fb1fdaa3 feat(perplexity-agent): add grok 4.6 and deepseek-v4-flash-0731 models configuration (#4736)
* feat(perplexity-agent): add grok 4.6 model configuration

* feat(perplexity-agent): add deepseek v4 flash model configuration
2026-08-14 17:58:28 -05:00
rakshith1928 535d7b6142 feat(muse-glimmer): add initial configuration for muse-glimmer-30b model (#4734) 2026-08-14 17:58:18 -05:00
opencode-agent[bot] 3cc6ffcf31 chore(sync): update Kilo model catalog (#4745)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 22:24:57 +00:00
opencode-agent[bot] b23392aced chore(sync): update OpenRouter model catalog (#4744)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 21:25:22 +00:00
opencode-agent[bot] 430f752241 chore(sync): update Kilo model catalog (#4743)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 21:25:20 +00:00
opencode-agent[bot] e5673b096a chore(sync): update Merge Gateway model catalog (#4742)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 20:26:23 +00:00
opencode-agent[bot] d3095b9c5e chore(sync): update OpenRouter model catalog (#4739)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 20:26:14 +00:00
opencode-agent[bot] a25d0e1f35 chore(sync): update Kilo model catalog (#4738)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 19:34:55 +00:00
opencode-agent[bot] 28aac9644a chore(sync): update NanoGPT model catalog (#4737)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 19:34:52 +00:00
m3 844718cc08 fix(github-copilot): add xhigh effort for Grok 4.6 (#4726) 2026-08-14 13:37:01 -05:00
opencode-agent[bot] 559783887a chore(sync): update Charm Hyper model catalog (#4728)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 13:36:54 -05:00
opencode-agent[bot] 30ca661dce chore(sync): update Deep Infra model catalog (#4731)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 13:36:45 -05:00
opencode-agent[bot] 8537b9f27b chore(sync): update Venice model catalog (#4733)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 13:36:36 -05:00
opencode-agent[bot] 581973939e chore(sync): update Kilo model catalog (#4732)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 18:33:07 +00:00
opencode-agent[bot] 2dcd6425bc chore(sync): update Baseten model catalog (#4730)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 18:33:05 +00:00
opencode-agent[bot] 0c86e74727 chore(sync): update OpenRouter model catalog (#4724)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 18:33:04 +00:00
opencode-agent[bot] fe2c45b7fe chore(sync): update NanoGPT model catalog (#4729)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 18:33:01 +00:00
opencode-agent[bot] 994ea92a66 feat(ofox): add missing chat models (#4718)
* feat(ofox): add missing chat models

* fix(ofox): use canonical Seed metadata

---------

Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-14 12:52:11 -05:00
opencode-agent[bot] ae2c1ab9a7 chore(sync): update Kilo model catalog (#4725)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 17:35:26 +00:00
m3 f88503a06e feat(github-copilot): add Grok 4.6 (#4723) 2026-08-14 12:33:31 -05:00
Aiden Cline 108087b1a8 fix(cloudflare-ai-gateway): remove providers unusable on the unified endpoint (#4715)
* fix(cloudflare-ai-gateway): trim new providers to Cloudflare's priced model catalog

* fix(cloudflare-ai-gateway): remove google-ai-studio and grok entries unusable on the unified endpoint
2026-08-14 12:10:26 -05:00
opencode-agent[bot] 6115ddd1cc chore(sync): update Merge Gateway model catalog (#4717)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 12:10:11 -05:00
Fenil Modi a58d019a5f Fix: Remove 'none' from kimi-k3 reasoning_options (Kimi K3 doesn't support it) (#4722)
* Fix: Remove 'none' from kimi-k3 reasoning_options (Kimi K3 doesn't support it)

* Fix: Remove 'none' from kimi-k3 reasoning_options (Kimi K3 doesn't support it)

* Fix: Restore complete comments, update reasoning_effort docs (low/high/max only)
2026-08-14 12:09:49 -05:00
github-actions[bot] 5e45e7b431 fix: [missing-model] ofox: deepseek/deepseek-v4-pro-0813 (#4689)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-14 11:33:21 -05:00
opencode-agent[bot] 12c6d33b5f chore(sync): update OpenRouter model catalog (#4713)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 16:32:35 +00:00
opencode-agent[bot] 2f70bbfa2b chore(sync): update Kilo model catalog (#4716)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 16:32:32 +00:00
opencode-agent[bot] 942682f45d chore(sync): update Kilo model catalog (#4714)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 15:33:02 +00:00
opencode-agent[bot] 753fdb558d chore(sync): update Merge Gateway model catalog (#4712)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 15:33:00 +00:00
opencode-agent[bot] 3f8fa9556b chore(sync): update Cortecs model catalog (#4707)
* chore(sync): update Cortecs model catalog

* fix(cortecs): add reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-14 10:03:23 -05:00
opencode-agent[bot] d21ca41daf chore(sync): update Hugging Face model catalog (#4701)
* chore(sync): update Hugging Face model catalog

* fix(huggingface): add DeepSeek reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-14 10:01:42 -05:00
opencode-agent[bot] 9330245632 chore(sync): update Kilo model catalog (#4710)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 10:01:33 -05:00
Søren Juul 296272ee74 feat(abacus): add missing text-generation models from RouteLLM catalog (#4705)
Adds 14 Abacus RouteLLM provider entries that were present in the live https://routellm.abacus.ai/v1/models endpoint but missing from the repo.

All entries use existing lab metadata via base_model and override only provider-specific cost, context/output limits, and modalities per Abacus API values.

Validation: bun validate passes.

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-14 10:01:00 -05:00
Aiden Cline bd483393f6 feat(cloudflare-ai-gateway): add google-ai-studio, grok, groq, mistral, deepseek providers (#4693)
* feat(cloudflare-ai-gateway): add google-ai-studio, grok, groq, mistral, deepseek providers

* fix(cloudflare-ai-gateway): drop xai fast mode pending gateway verification
2026-08-14 09:59:33 -05:00
opencode-agent[bot] aad9bbadf0 chore(sync): update OpenRouter model catalog (#4711)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 14:35:35 +00:00
opencode-agent[bot] f8edc0654f chore(sync): update Charm Hyper model catalog (#4709)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 13:46:05 +00:00
opencode-agent[bot] d93726a81a chore(sync): update OpenRouter model catalog (#4708)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 12:30:35 +00:00
opencode-agent[bot] 66b2aa9739 chore(sync): update OpenRouter model catalog (#4706)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 11:31:04 +00:00
opencode-agent[bot] 1c5b8fa45a chore(sync): update NanoGPT model catalog (#4702)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 10:36:13 +00:00
opencode-agent[bot] dc073488de chore(sync): update Kilo model catalog (#4704)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 09:38:17 +00:00
opencode-agent[bot] b1d51322b6 chore(sync): update OpenRouter model catalog (#4703)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 09:38:06 +00:00
opencode-agent[bot] 3876740bf4 chore(sync): update Venice model catalog (#4698)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 08:41:54 +00:00
opencode-agent[bot] d31cf0a2f0 chore(sync): update NanoGPT model catalog (#4700)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 08:41:50 +00:00
opencode-agent[bot] fe5341d617 chore(sync): update OpenRouter model catalog (#4697)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 07:48:34 +00:00
opencode-agent[bot] 88793ca499 chore(sync): update NanoGPT model catalog (#4699)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 07:48:29 +00:00
opencode-agent[bot] f3c78ff719 chore(sync): update Kilo model catalog (#4696)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 06:45:39 +00:00
m3 2c355992c3 feat(github-copilot): add Gemini 3.7 Flash (#4691) 2026-08-14 01:23:22 -05:00
Ahmad Shahzad 9b5aabe4f6 feat(fireworks-ai): add DeepSeek V4 Pro 0813 (#4695) 2026-08-14 01:23:05 -05:00
Jack 94a1629610 feat(opencode go): add glm 5.3 2026-08-14 14:04:39 +08:00
opencode-agent[bot] f75b391786 chore(sync): update Deep Infra model catalog (#4686)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 01:00:11 -05:00
opencode-agent[bot] ced6f17ad3 chore(sync): update NanoGPT model catalog (#4684)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 01:00:02 -05:00
opencode-agent[bot] 74f91043e0 chore(sync): update Kilo model catalog (#4683)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:59:54 -05:00
opencode-agent[bot] 2ca3d674c2 chore(sync): update Cloudflare Workers AI model catalog (#4685)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:59:47 -05:00
opencode-agent[bot] c91dbe3786 chore(sync): update Hugging Face model catalog (#4682)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:59:37 -05:00
opencode-agent[bot] 31816fd207 chore(sync): update Weights & Biases model catalog (#4681)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:59:28 -05:00
opencode-agent[bot] 729a5dbc85 chore(sync): update Cortecs model catalog (#4680)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:59:10 -05:00
opencode-agent[bot] 740104e528 feat: add GLM-5.3 coding plan models (#4690)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-14 00:58:58 -05:00
opencode-agent[bot] f5ae5bef52 chore(sync): update OpenRouter model catalog (#4688)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 05:47:28 +00:00
opencode-agent[bot] 01b47f4d56 chore(sync): update Ofox model catalog (#4687)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 05:47:27 +00:00
opencode-agent[bot] ff80d21a08 chore(sync): update Merge Gateway model catalog (#4679)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 05:47:19 +00:00
Aiden Cline 06f44f509c chore(cloudflare-ai-gateway): refresh catalog against first-party and synced sources (#4676)
* chore(cloudflare-ai-gateway): refresh catalog against first-party and synced sources

* chore(cloudflare-ai-gateway): use base_model stubs for all catalog entries

* chore(cloudflare-ai-gateway): omit experimental fast modes pending gateway billing verification

* fix(cloudflare-ai-gateway): add missing lab metadata and enforce base_model stubs
2026-08-14 00:44:12 -05:00
Aiden Cline 041d76a7c6 fix(cloudflare-ai-gateway): align reasoning effort options with first-party catalogs (#4674)
* fix(cloudflare-ai-gateway): align reasoning effort options with first-party catalogs

* fix(cloudflare-ai-gateway): use budget_tokens for pre-effort Claude models
2026-08-14 00:01:00 -05:00
opencode-agent[bot] ca8a9a857d chore(sync): update Vercel AI Gateway model catalog (#4675)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 04:53:57 +00:00
opencode-agent[bot] 41a2b1a780 chore(sync): update CrossModel model catalog (#4673)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 23:30:10 -05:00
celeste 464b988268 feat(ofox): fill the gaps automation left — 4 models, native gemini protocol, verified reasoning fixes (#3404)
The issue-fixer pipeline brought Ofox to full listing (72 models) after
trackMissingModels was enabled — this PR is rebuilt on top of that to
cover only what automation could not author:

- 4 models the pipeline missed: gemini-3.5-flash-lite, minimax-m2.7,
  kimi-k2.7-code, gpt-5.4-pro (flat-rate comment included)
- [provider] native gemini protocol for the four Gemini models
  (@ai-sdk/google + https://api.ofox.ai/gemini/v1beta, verified
  end-to-end: listing, generateContent, SSE, x-goog-api-key auth)
- kimi-k3: replace the effort-only declaration with the behaviorally
  verified toggle (reasoning_tokens 118 vs none; adaptive rejected by
  the host; neither effort path shows graded effect)
- gemini-3.6-flash: add input_audio = 1.5 (matches live catalog and
  first-party)

Co-authored-by: celeste1900 <caojingmiao@meiqia.com>
2026-08-13 23:29:52 -05:00
Jack fa03dca90b feat(opencode): add Muse Spark 1.2 2026-08-14 12:28:49 +08:00
opencode-agent[bot] 1d88af457a chore(sync): update OpenRouter model catalog (#4670)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 03:57:03 +00:00
opencode-agent[bot] aac16b7fbf chore(sync): update Kilo model catalog (#4672)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 03:56:52 +00:00
opencode-agent[bot] 3e93feddbf chore(sync): update Kilo model catalog (#4669)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 03:08:55 +00:00
opencode-agent[bot] b7367fabdc fix(sync): allow Venice reasoning auto-merge (#4668)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-13 21:42:10 -05:00
opencode-agent[bot] 52c9831c8b chore(sync): update Venice model catalog (#4661)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 21:40:40 -05:00
opencode-agent[bot] 2bda1f4a8f chore(sync): update Baseten model catalog (#4664)
* chore(sync): update Baseten model catalog

* fix(baseten): correct DeepSeek reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-13 21:37:07 -05:00
opencode-agent[bot] c5de7d0258 chore(sync): update NanoGPT model catalog (#4659)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 01:55:21 +00:00
opencode-agent[bot] 07c57f2b4d chore(sync): update Vercel AI Gateway model catalog (#4667)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 01:55:14 +00:00
opencode-agent[bot] 482b6b08bc chore(sync): update OpenRouter model catalog (#4665)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:39:48 +00:00
opencode-agent[bot] 0bfe96459e chore(sync): update Kilo model catalog (#4657)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:39:45 +00:00
opencode-agent[bot] 8d4cab3a0c chore(sync): update Deep Infra model catalog (#4662)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-14 00:39:40 +00:00
opencode-agent[bot] 2ceaa0ee45 chore(sync): update OpenRouter model catalog (#4663)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 23:27:48 +00:00
opencode-agent[bot] b89ba777e5 chore(sync): update DigitalOcean model catalog (#4660)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 23:27:44 +00:00
opencode-agent[bot] e7ff2fb162 chore(sync): update Hugging Face model catalog (#4658)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 23:27:42 +00:00
opencode-agent[bot] 40804fdb66 chore(sync): update Kilo model catalog (#4654)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 17:59:11 -05:00
Eric W. Tramel 142715e73f feat: add Arcee AI lab and Trinity models (#4655)
* feat: add Arcee AI lab and Trinity models

* fix: correct Trinity metadata dates

* fix: align Trinity descriptions with model cards
2026-08-13 17:58:59 -05:00
Emmanuel Acheampong 9b01dfab0e Add Crusoe provider (#3769)
* Add Crusoe provider

* Remove pricing; add Nemotron-3-Ultra-550B

* Address review: declare reasoning_options, theme-adaptive logo

- Add reasoning_options = [] to the 12 reasoning-model TOMLs: Crusoe's
  OpenAI-compatible endpoint documents no caller-side reasoning controls
  (docs.crusoecloud.com defers to the generic OpenAI API reference), so
  an empty declaration is correct per the validate schema.
- logo.svg: drop fixed width/height, use fill="currentColor" so the
  wordmark adapts to light/dark themes.

bun validate passes locally.

* Move reasoning_options rationale comments above first key

* Restore trailing newlines in reasoning-model TOMLs

* fix(crusoe): set reasoning config from live endpoint probe

Probed api.inference.crusoecloud.com on 2026-08-13 with reasoning_effort
low/medium/high/none/max plus tool-call interleaving checks per model.

- gpt-oss-120b: effort low/medium/high (reasoning length scales; none/max
  return 400), interleaved with tool calls
- GLM-5.2, Kimi-K2.6, Nemotron-3-Nano-Omni-Reasoning: toggle (effort
  "none" disables reasoning; low/medium/high inert), interleaved
- GLM-5.1: reasoning always on, no working caller-side control
- Reasoning arrives in the message field named "reasoning", so the
  boolean interleaved form is used
- Drop reasoning_options = [] from non-reasoning models
- Remove six models whose IDs drifted from the live /v1/models catalog
  or whose reasoning deployment is unverified; follow-up will re-add

* fix(crusoe): gemma-4-31b-it reasoning toggle

Base model has reasoning = true so reasoning_options is required by the
schema. Probe shows reasoning_effort acts as an enable/disable toggle on
this deployment (off by default, "none" disables, other values enable).

* feat(crusoe): add per-model pricing

Source: https://www.crusoe.ai/cloud/pricing (accessed 2026-08-13).
Input, output, and cached-read rates per million tokens for all eight
models. Nemotron Omni carries a separate audio input rate (0.50) via
cost.input_audio; its text/image/video input rate is 0.30.
2026-08-13 17:58:39 -05:00
opencode-agent[bot] 6d17729e40 chore(sync): update Venice model catalog (#4653)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 22:27:35 +00:00
opencode-agent[bot] 81512c6614 chore(sync): update OpenRouter model catalog (#4651)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 21:30:26 +00:00
opencode-agent[bot] be9dd3c7ff chore(sync): update NanoGPT model catalog (#4649)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 15:54:03 -05:00
opencode-agent[bot] 09d7308b19 chore(sync): update Venice model catalog (#4650)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 15:53:54 -05:00
opencode-agent[bot] 095924b4d2 chore(sync): update OpenRouter model catalog (#4648)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 20:27:34 +00:00
opencode-agent[bot] 60f679bae2 chore(sync): update Vercel AI Gateway model catalog (#4647)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 20:27:29 +00:00
opencode-agent[bot] 86060ddadc chore(sync): update NanoGPT model catalog (#4644)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 14:47:24 -05:00
opencode-agent[bot] 5a627a355c feat(sync): trust LLM Gateway reasoning metadata (#4646)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-13 14:47:10 -05:00
opencode-agent[bot] 62bac49078 chore(sync): update LLM Gateway model catalog (#4643)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 14:45:44 -05:00
opencode-agent[bot] 2e9b3b4a02 chore(sync): update Merge Gateway model catalog (#4645)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 19:37:56 +00:00
Jack b1810e30d7 add gemini-3.7-flash to opencode 2026-08-14 03:19:00 +08:00
Ahmad Shahzad 9d486fd64a feat: add Fireworks provider models for Inkling, Muse Glimmer 30B, Nemotron 3 Ultra, Nemotron 3.5 Lightning, and Qwen3.8 Max (#4642) 2026-08-13 14:04:22 -05:00
opencode-agent[bot] d196338757 chore(sync): update Vercel AI Gateway model catalog (#4633)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): correct reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-13 13:45:52 -05:00
opencode-agent[bot] 02cc73eab5 chore(sync): update OpenRouter model catalog (#4641)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:44:44 -05:00
opencode-agent[bot] 10bb2bdb49 chore(sync): update LLM Gateway model catalog (#4640)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:44:22 -05:00
opencode-agent[bot] a1742a3776 chore(sync): update NanoGPT model catalog (#4639)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:44:15 -05:00
opencode-agent[bot] 58a5a4f8d8 chore(sync): update Requesty model catalog (#4634)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:44:08 -05:00
opencode-agent[bot] 3e41cf0a90 chore(sync): update Charm Hyper model catalog (#4628)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:43:42 -05:00
opencode-agent[bot] c1dc1eb5ff chore(sync): update Merge Gateway model catalog (#4638)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 18:34:43 +00:00
opencode-agent[bot] d4c88ebd50 chore(sync): update Kilo model catalog (#4637)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 18:34:41 +00:00
opencode-agent[bot] d4f9394783 chore(sync): update Kilo model catalog (#4636)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 17:35:48 +00:00
opencode-agent[bot] 057888a5da chore(sync): update OpenRouter model catalog (#4635)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 17:35:46 +00:00
opencode-agent[bot] 0012011936 feat: add Gemini 3.7 Flash (#4632)
* feat: add Gemini 3.7 Flash

* fix: use Gemini 3.7 introductory pricing

---------

Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-13 12:26:42 -05:00
opencode-agent[bot] e66f005c06 chore(sync): update Kilo model catalog (#4627)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 16:34:02 +00:00
opencode-agent[bot] 7bb5980757 chore(sync): update NanoGPT model catalog (#4630)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 15:35:19 +00:00
opencode-agent[bot] 9a8bb64540 chore(sync): update OpenRouter model catalog (#4629)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 15:35:13 +00:00
opencode-agent[bot] 2bd7da275b chore(sync): update Venice model catalog (#4598)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 10:00:33 -05:00
opencode-agent[bot] 256a3deaa5 chore(sync): update Kilo model catalog (#4623)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 10:00:01 -05:00
opencode-agent[bot] a8370c548d chore(sync): update NanoGPT model catalog (#4619)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 09:59:54 -05:00
opencode-agent[bot] f31bbbb4b0 chore(sync): update CrossModel model catalog (#4600)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 09:59:45 -05:00
opencode-agent[bot] 766597ec5f chore(sync): update LLM Gateway model catalog (#4593)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 09:59:15 -05:00
opencode-agent[bot] 7e4566d558 chore(sync): update Charm Hyper model catalog (#4622)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:47:48 +00:00
opencode-agent[bot] 8e4e561cb0 chore(sync): update OpenRouter model catalog (#4621)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 13:47:46 +00:00
Jack 0e0b204c16 chore(opencode): deprecate Ling 3.0 Tiny Free 2026-08-13 20:47:22 +08:00
opencode-agent[bot] 0e26a4eac7 chore(sync): update OpenRouter model catalog (#4618)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 12:32:53 +00:00
opencode-agent[bot] a2cdb76d54 chore(sync): update Kilo model catalog (#4617)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 12:32:45 +00:00
opencode-agent[bot] 0e63bef4d9 chore(sync): update Kilo model catalog (#4616)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 11:31:45 +00:00
opencode-agent[bot] e59ad0f299 chore(sync): update NanoGPT model catalog (#4615)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 11:31:40 +00:00
opencode-agent[bot] cf628d889e chore(sync): update NanoGPT model catalog (#4613)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 10:38:56 +00:00
opencode-agent[bot] 6ed870d749 chore(sync): update Kilo model catalog (#4614)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 10:38:54 +00:00
opencode-agent[bot] a9a26bc7a8 chore(sync): update OpenRouter model catalog (#4612)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 10:38:49 +00:00
opencode-agent[bot] d3cc567c7e chore(sync): update Kilo model catalog (#4611)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 09:40:59 +00:00
opencode-agent[bot] e3dd11feee chore(sync): update NanoGPT model catalog (#4610)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 09:40:51 +00:00
opencode-agent[bot] 3ec2000654 chore(sync): update Inceptron model catalog (#4607)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 07:49:39 +00:00
opencode-agent[bot] 4234814e1d chore(sync): update Kilo model catalog (#4606)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 07:49:35 +00:00
opencode-agent[bot] 95b26d1be3 chore(sync): update OpenRouter model catalog (#4605)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 07:49:31 +00:00
opencode-agent[bot] 0c0a323f05 chore(sync): update Kilo model catalog (#4604)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 06:46:54 +00:00
opencode-agent[bot] 46b55f8cd6 chore(sync): update OpenRouter model catalog (#4603)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 06:46:48 +00:00
opencode-agent[bot] 2c51f7070a chore(sync): update OpenRouter model catalog (#4601)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 03:57:35 +00:00
opencode-agent[bot] 7ac862dc68 chore(sync): update OpenRouter model catalog (#4599)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 00:40:08 +00:00
opencode-agent[bot] 15f33eb583 chore(sync): update Kilo model catalog (#4596)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-13 00:40:06 +00:00
opencode-agent[bot] 6fc6f35c95 chore(sync): update OpenRouter model catalog (#4597)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 23:27:47 +00:00
opencode-agent[bot] 9499c8320a fix(sync): import LLM Gateway reasoning efforts (#4595)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 18:17:17 -05:00
opencode-agent[bot] 5cae86c2ca chore(sync): update Venice model catalog (#4591)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 18:13:37 -05:00
opencode-agent[bot] 33934bc733 chore(sync): update OpenRouter model catalog (#4594)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 17:33:35 -05:00
opencode-agent[bot] 77d3ea2b0f chore(sync): update CrossModel model catalog (#4589)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 17:33:23 -05:00
opencode-agent[bot] b007f57877 chore(sync): update Kilo model catalog (#4592)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 22:27:45 +00:00
opencode-agent[bot] e78889836f chore(sync): update Merge Gateway model catalog (#4590)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 20:29:26 +00:00
opencode-agent[bot] df5b90789f chore(sync): update LLM Gateway model catalog (#4582)
* chore(sync): update LLM Gateway model catalog

* fix(llmgateway): correct Grok 4.6 reasoning options

* fix(llmgateway): factor Grok 4.6 metadata

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 15:27:38 -05:00
opencode-agent[bot] ddcf98e6e5 chore(sync): update Kilo model catalog (#4586)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 15:15:02 -05:00
opencode-agent[bot] 8221d31a14 feat(sync): trust reasoning metadata from more providers (#4588)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 15:14:49 -05:00
opencode-agent[bot] cc3ea068f5 chore(sync): update NanoGPT model catalog (#4584)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 15:14:33 -05:00
opencode-agent[bot] b9f4eb5e7e chore(sync): update Merge Gateway model catalog (#4583)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 15:07:32 -05:00
Aiden Cline ede9d97db8 fix(sync): accept nullable CrossModel reasoning controls (#4587) 2026-08-12 15:06:57 -05:00
opencode-agent[bot] 0370588c96 chore(sync): update OpenRouter model catalog (#4585)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 19:39:26 +00:00
opencode-agent[bot] 40058d7627 chore(sync): update OpenRouter model catalog (#4579)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 18:34:18 +00:00
opencode-agent[bot] 45387b38f5 chore(sync): update DigitalOcean model catalog (#4578)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 18:34:11 +00:00
opencode-agent[bot] 0974cab8a5 chore(sync): update Kilo model catalog (#4577)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 18:34:09 +00:00
opencode-agent[bot] ae1dc97681 chore(sync): update NanoGPT model catalog (#4572)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 12:51:24 -05:00
opencode-agent[bot] 00ea4a438a chore(sync): update Kilo model catalog (#4574)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 12:51:12 -05:00
opencode-agent[bot] db5537fbba chore(sync): update Merge Gateway model catalog (#4564)
* chore(sync): update Merge Gateway model catalog

* fix(merge-gateway): correct Grok reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 12:50:56 -05:00
opencode-agent[bot] 9c77a0fc7b chore(sync): update Vercel AI Gateway model catalog (#4567)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): correct reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 12:50:37 -05:00
opencode-agent[bot] 8bad6f1ab8 fix: add xhigh reasoning for Grok 4.6 (#4575)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 12:48:22 -05:00
opencode-agent[bot] a05fbfea10 chore(sync): update OpenRouter model catalog (#4573)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 17:36:23 +00:00
opencode-agent[bot] 8b43b2baac chore(sync): update Inceptron model catalog (#4562)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 12:23:21 -05:00
opencode-agent[bot] ef4cd907d6 chore(sync): update Venice model catalog (#4563)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 12:23:09 -05:00
opencode-agent[bot] f6e7b26986 chore(sync): update Kilo model catalog (#4566)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 12:22:51 -05:00
m3 73e0f6827b Add DeepSeek V4 Pro 0813 (#4570) 2026-08-12 12:21:32 -05:00
opencode-agent[bot] 2133bd1441 chore(sync): update CrossModel model catalog (#4568)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 16:34:22 +00:00
opencode-agent[bot] 0ccd0f642f chore(sync): update OpenRouter model catalog (#4565)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 16:34:16 +00:00
opencode-agent[bot] 57b505f777 chore(sync): update Tinfoil model catalog (#4561)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 16:34:11 +00:00
Jack 1f3c91536e Add new DS Pro in Go 2026-08-13 00:06:52 +08:00
Fenil Modi 2668ec082a chore(sync): update ai& model catalog (#4544)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-12 11:02:04 -05:00
github-actions[bot] ca042b5209 fix: [missing-model] tinfoil: deepseek-v4-flash (#4555)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-12 10:52:14 -05:00
opencode-agent[bot] 2f03855675 feat: add Grok 4.6 (#4559)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 10:51:43 -05:00
Denis b5831ba2b9 fix(providers/azure): update gpt-5.6 sol/terra/luna pricing (#4541)
Co-authored-by: Denis Kot <denis.kot@makersite.de>
2026-08-12 10:50:53 -05:00
Frank 74789f5a02 feat(catalog): add Grok 4.6 2026-08-12 11:47:03 -04:00
Mounir Charef 0b921aaf88 feat(provider): add Eden AI (#4506) 2026-08-12 10:44:57 -05:00
Matthew Feroz 66c6a1dc69 feat(merge-gateway): expose OpenAI-compatible API endpoint (#4547) 2026-08-12 10:44:39 -05:00
opencode-agent[bot] d54d9489e2 chore(sync): update NanoGPT model catalog (#4545)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 10:44:13 -05:00
opencode-agent[bot] f38bffad7c chore(sync): update DigitalOcean model catalog (#4557)
* chore(sync): update DigitalOcean model catalog

* fix(digitalocean): add Qwen 3.8 reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-12 10:44:00 -05:00
m3 def9abba49 feat(github-copilot): add MAI-Code-1.1-Flash (#4540) 2026-08-12 10:43:05 -05:00
Oskar Gustafsson 3a30e92fe0 feat(sync): add Inceptron model catalog sync (#4548)
* Add Inceptron provider sync module

* Require review for Inceptron reasoning sync changes

Inceptron's models_dev reasoning metadata is provider-authored and is not independently constrained to reviewed lab or peer baselines. Keep it outside the reasoning auto-merge allowlist and assert that changes to its reasoning metadata require manual review.
2026-08-12 10:42:43 -05:00
opencode-agent[bot] 7f7983ec46 chore(sync): update LLM Gateway model catalog (#4550)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 10:42:05 -05:00
opencode-agent[bot] fd7a689c30 chore(sync): update OpenRouter model catalog (#4558)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 15:34:49 +00:00
opencode-agent[bot] 48faa4fcae chore(sync): update Tinfoil model catalog (#4554)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 15:34:45 +00:00
opencode-agent[bot] 5ff6ad5600 chore(sync): update OpenRouter model catalog (#4549)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 14:38:38 +00:00
opencode-agent[bot] 90c7f832fd chore(sync): update Charm Hyper model catalog (#4551)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 13:47:30 +00:00
opencode-agent[bot] 006eb78892 chore(sync): update OpenRouter model catalog (#4546)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 09:40:35 +00:00
opencode-agent[bot] 5271453b53 chore(sync): update Vercel AI Gateway model catalog (#4543)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 07:49:16 +00:00
opencode-agent[bot] fbb1e3bccd chore(sync): update NanoGPT model catalog (#4542)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 07:49:14 +00:00
opencode-agent[bot] f342c71106 chore(sync): update Kilo model catalog (#4539)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 06:45:39 +00:00
opencode-agent[bot] c6c8a2ab63 chore(sync): update OpenRouter model catalog (#4538)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 06:45:32 +00:00
Jack 5bc8e43523 fix(opencode): restore Hy3 Free 2026-08-12 13:31:50 +08:00
opencode-agent[bot] 73a7900abf chore(sync): update Venice model catalog (#4536)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 04:54:05 +00:00
Jack 210a56be88 fix(opencode): deprecate LongCat 2.0 Free 2026-08-12 11:09:11 +08:00
opencode-agent[bot] 4ec6570e9f chore(sync): update Venice model catalog (#4535)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 03:07:04 +00:00
opencode-agent[bot] 28b0185c09 chore(sync): update Kilo model catalog (#4534)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 03:07:01 +00:00
opencode-agent[bot] 8f00edbbb3 chore(sync): update Kilo model catalog (#4525)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 22:00:31 -05:00
Jack 13b14b8473 fix(opencode): temporarily deprecate Hy3 Free 2026-08-12 10:37:50 +08:00
opencode-agent[bot] 093311537e chore(sync): update OpenRouter model catalog (#4533)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 01:55:20 +00:00
opencode-agent[bot] 8907d55230 chore(sync): update OpenRouter model catalog (#4532)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 00:38:43 +00:00
opencode-agent[bot] 781078d8b0 chore(sync): update DigitalOcean model catalog (#4531)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-12 00:38:41 +00:00
opencode-agent[bot] ed50740cb0 chore(sync): update OpenRouter model catalog (#4528)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 23:27:25 +00:00
opencode-agent[bot] 91711b6230 chore(sync): update OpenRouter model catalog (#4526)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 21:30:25 +00:00
opencode-agent[bot] 02387b732b chore(sync): update OpenRouter model catalog (#4524)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 20:29:11 +00:00
opencode-agent[bot] 5d8d89a633 chore(sync): update NanoGPT model catalog (#4513)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 14:57:03 -05:00
opencode-agent[bot] 9ad1819e47 chore(sync): update Kilo model catalog (#4523)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 14:56:52 -05:00
opencode-agent[bot] e55c9ba4b0 chore(sync): update OpenRouter model catalog (#4522)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 19:38:37 +00:00
Jack 82b532650e feat(opencode): add Hy3 Free 2026-08-12 02:53:08 +08:00
Aiden Cline d702f48315 fix(sync): preserve OpenRouter reasoning toggles (#4521) 2026-08-11 13:44:26 -05:00
opencode-agent[bot] 607bfb05b4 chore(sync): update OpenRouter model catalog (#4511)
* chore(sync): update OpenRouter model catalog

* fix(openrouter): add new model reasoning controls

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-11 13:44:14 -05:00
opencode-agent[bot] b12de48dfd chore(sync): update EmpirioLabs AI model catalog (#4518)
* chore(sync): update EmpirioLabs AI model catalog

* docs(empiriolabs): cite Seed reasoning controls

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-11 13:44:06 -05:00
opencode-agent[bot] 9ae67ee1d9 chore(sync): update Deep Infra model catalog (#4519)
* chore(sync): update Deep Infra model catalog

* fix(deepinfra): add Seed reasoning efforts

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-11 13:43:53 -05:00
opencode-agent[bot] 370367fbfe chore(sync): update Kilo model catalog (#4514)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 13:35:02 -05:00
opencode-agent[bot] 012f70b22c chore(sync): update Charm Hyper model catalog (#4520)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 18:34:15 +00:00
opencode-agent[bot] 07b834c796 chore(sync): update Merge Gateway model catalog (#4517)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 18:34:06 +00:00
Aiden Cline 69aa0c788d feat(bytedance-seed): add Seed 2.0 Code metadata (#4516)
* feat(bytedance-seed): add Seed 2.0 Code metadata

* fix(sync): resolve Seed 2.0 Code aliases
2026-08-11 13:30:12 -05:00
Aiden Cline f2ad10f498 fix(nemotron): use shared Lightning model ID (#4515) 2026-08-11 13:24:07 -05:00
opencode-agent[bot] 1d0f9ba5a4 chore(sync): update Ambient model catalog (#4512)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 17:35:38 +00:00
opencode-agent[bot] 947073d5d8 chore(sync): update Vercel AI Gateway model catalog (#4510)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 17:35:35 +00:00
Aiden Cline c8c22290d9 feat: label PRs cleared by automated review (#4505)
* feat: label PRs cleared by automated review

* refactor: let reviewer explicitly mark PR ready

* fix: allow ready tool in reviewer workflow
2026-08-11 11:49:44 -05:00
opencode-agent[bot] df2d3b4566 chore(sync): update Merge Gateway model catalog (#4508)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 11:49:00 -05:00
Aiden Cline 84029a0efc feat(nvidia): add Nemotron 3.5 Lightning (#4507) 2026-08-11 11:48:44 -05:00
opencode-agent[bot] 652b312af3 chore(sync): update Cortecs model catalog (#4509)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 16:34:10 +00:00
Frank e4e9d4723f update zen models 2026-08-11 12:03:09 -04:00
github-actions[bot] 1cafaf4471 fix: [Privatemode] sync supported models (#4449)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-11 10:45:14 -05:00
opencode-agent[bot] f325d53557 chore(sync): update LLM Gateway model catalog (#4504)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:43:09 -05:00
Kibouo 0ee9990e13 Add Sonnet 5 to Azure Cognitive Services (#4493)
* Add Sonnet 5 to Azure Cognitive Services

* fix azure claude model catalogs

* fix azure claude review findings

---------

Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-11 10:42:41 -05:00
opencode-agent[bot] 48be5c2c62 chore(sync): update OpenRouter model catalog (#4503)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 15:35:01 +00:00
Manaf941 c4d6d56afd feat: DeepSeek-V4-Flash-0731, GLM-5.2-NVFP4 and Kimi-K2.7-Code for provider Hetzner (#4498)
* feat: DeepSeek-V4-Flash-0731, GLM-5.2-NVFP4 and Kimi-K2.7-Code for provider Hetzner

* fix: reasoning_options for deepseek, glm, and remove limits for kimi k2.7

* chore: remove redundant kimi k2.7 output modality
2026-08-11 10:12:32 -05:00
opencode-agent[bot] 35e8c5547d chore(sync): update Venice model catalog (#4486)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:11:47 -05:00
opencode-agent[bot] aeca66036d chore(sync): update Vercel AI Gateway model catalog (#4490)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:10:52 -05:00
opencode-agent[bot] 2606c725df chore(sync): update Weights & Biases model catalog (#4487)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:10:41 -05:00
d2bz b89c75d8b9 feat(aihubmix): add Qwen3.8 Max and Claude Opus 5 (#4495)
* feat(aihubmix): add Qwen3.8 Max and Claude Opus 5

* fix(aihubmix): document reasoning control paths

* docs(aihubmix): cite Qwen3.8 Max pricing
2026-08-11 10:10:30 -05:00
opencode-agent[bot] 297a127774 chore(sync): update NanoGPT model catalog (#4496)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:10:10 -05:00
opencode-agent[bot] 0721d2d7a5 chore(sync): update Kilo model catalog (#4500)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 10:09:57 -05:00
Jack 425aa30b2c feat(opencode): add Nemotron 3.5 Lightning Free 2026-08-11 22:44:30 +08:00
opencode-agent[bot] 4abaeb87f8 chore(sync): update OpenRouter model catalog (#4501)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 14:38:40 +00:00
opencode-agent[bot] 8482f0c9a2 chore(sync): update OpenRouter model catalog (#4499)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 13:45:42 +00:00
Jack b0002c76a5 feat(opencode-go): default DeepSeek Flash to openai completion 2026-08-11 18:13:27 +08:00
Jack 95aaaebad1 feat(opencode-go): default DeepSeek Flash to Anthropic 2026-08-11 16:39:02 +08:00
opencode-agent[bot] 69447db9cc chore(sync): update Kilo model catalog (#4492)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 08:35:04 +00:00
opencode-agent[bot] 5fe153b372 chore(sync): update OpenRouter model catalog (#4491)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 08:34:55 +00:00
opencode-agent[bot] d7baf6afdd chore(sync): update OpenRouter model catalog (#4489)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 07:43:05 +00:00
opencode-agent[bot] 1c7606e146 chore(sync): update NanoGPT model catalog (#4488)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 06:34:10 +00:00
opencode-agent[bot] 4c18d6ec72 chore(sync): update OpenRouter model catalog (#4485)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 06:34:02 +00:00
opencode-agent[bot] 655dc7da95 chore(sync): update Kilo model catalog (#4484)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 06:33:59 +00:00
opencode-agent[bot] 0f03bafea2 chore(sync): update Kilo model catalog (#4481)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 00:41:03 -05:00
opencode-agent[bot] fc67c07ffc feat(nvidia): add Nemotron 3.5 Lightning metadata (#4468)
* feat(nvidia): add Nemotron 3.5 Lightning metadata

* chore: keep NVIDIA metadata change catalog-only

---------

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-08-11 00:40:53 -05:00
opencode-agent[bot] 3f98469287 chore(sync): update OpenRouter model catalog (#4483)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 05:38:05 +00:00
opencode-agent[bot] a1c9681752 chore(sync): update OpenRouter model catalog (#4482)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 04:44:34 +00:00
jeremysamuel13 431684cc45 fix(amazon-bedrock): update GPT-5.6 limits (#4473)
Inherit the expanded 1.05M context limits and add Bedrock's long-context pricing tier above 272K tokens.
2026-08-10 23:12:21 -05:00
Aiden Cline ef4eb2ac03 feat(models): add Meta Muse Glimmer 30B lab metadata (#4479)
Add the lab model so OpenRouter, Vercel, Kilo, and other hosts can
base_model onto meta/muse-glimmer-30b instead of shipping standalone
copies.
2026-08-10 23:11:53 -05:00
Aiden Cline a35c2f70e4 fix: map Muse Glimmer hosts onto the Meta lab model (#4480)
* feat(models): add Meta Muse Glimmer 30B lab metadata

Add the lab model so OpenRouter, Vercel, Kilo, and other hosts can
base_model onto meta/muse-glimmer-30b instead of shipping standalone
copies.

* fix: map Muse Glimmer hosts onto the Meta lab model

Factor OpenRouter and Vercel onto base_model = meta/muse-glimmer-30b
and keep only host cost plus the documented low/medium/high/xhigh
reasoning_effort controls.
2026-08-10 23:11:40 -05:00
opencode-agent[bot] 31846636e5 chore(sync): update Kilo model catalog (#4470)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 23:10:04 -05:00
opencode-agent[bot] 17b9a5c211 chore(sync): update OpenRouter model catalog (#4478)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 03:52:21 +00:00
Jack a2c502a245 remove north-mini-code-free from freetier 2026-08-11 11:49:02 +08:00
opencode-agent[bot] a2db899900 chore(sync): update OpenRouter model catalog (#4476)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 02:57:33 +00:00
opencode-agent[bot] cdf4cf4aa3 chore(sync): update OpenRouter model catalog (#4475)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 01:54:55 +00:00
opencode-agent[bot] 1d8a35c3b2 chore(sync): update OpenRouter model catalog (#4474)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-11 00:33:07 +00:00
opencode-agent[bot] a8b9fa0ca7 chore(sync): update OpenRouter model catalog (#4472)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 23:26:46 +00:00
opencode-agent[bot] 60348577ad chore(sync): update OpenRouter model catalog (#4469)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 22:26:56 +00:00
opencode-agent[bot] b9a60e8916 chore(sync): update Weights & Biases model catalog (#4464)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 17:23:43 -05:00
Divy dbb6e6e980 fix(coralbricks): give the logo intrinsic dimensions; drop a stale note (#4466)
The logo declared only a viewBox, so consumers that size an <img> from the
SVG's intrinsic dimensions rendered nothing and fell back to a placeholder
icon (visible in OpenCode's provider list). Adding width/height scales the
existing artwork into the same 24x24 box every other provider logo uses;
the viewBox does the scaling, so the art is unchanged.

The provider.toml comment said request-side reasoning control was not
declared because local serving rejected it. That stopped being true when
the gateway normalized the reasoning field, and the model entries have
declared reasoning_options (toggle + effort) since then, so the note now
contradicts the data next to it. Re-verified against the live API today:
reasoning {effort} and {enabled: false} both behave as declared on
glm-5.2-fp4, gpt-oss-120b and kimi-k3.
2026-08-10 17:21:31 -05:00
opencode-agent[bot] c331429bc4 fix(greenpt): classify DeepSeek V4 Flash 0731 (#4467)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-08-10 17:21:05 -05:00
opencode-agent[bot] 7a9f981ce5 chore(sync): update OpenRouter model catalog (#4465)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 21:28:27 +00:00
opencode-agent[bot] 5cd81f9b40 chore(sync): update NanoGPT model catalog (#4463)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 20:27:57 +00:00
opencode-agent[bot] 486b043d76 chore(sync): update OpenRouter model catalog (#4462)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 20:27:54 +00:00
opencode-agent[bot] c619ce5f30 chore(sync): update Kilo model catalog (#4461)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 20:27:51 +00:00
github-actions[bot] 9da38e8389 fix: Automatically synchronize Privatemode model definitions (#4441)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-10 15:02:35 -05:00
Divy ff11be450c provider: add CoralBricks (#4040)
* provider: add CoralBricks (OpenAI-compatible gateway)

Adds CoralBricks (https://inference.coralbricks.ai/v1) with four hosted
models referencing existing lab entries: zhipuai/glm-5.2 (as glm-5.2-fp4,
1M ctx), moonshotai/kimi-k2.6, moonshotai/kimi-k3, openai/gpt-oss-120b.
Reasoning toggle verified against the live endpoint. bun validate passes.

* review: currentColor logo, interleaved=true, affirmative reasoning audit

- logo.svg rebuilt from brand source: currentColor, square viewBox, no
  fixed size or hardcoded colors
- interleaved = true on all four reasoning models (side channel streams
  via a 'reasoning' delta field, name not in the field enum)
- reasoning_options = []: live-tested reasoning.effort low/high — honored
  on the gateway's vendor-relay path (e.g. gpt-oss 68 vs 248 reasoning
  tokens) but rejected with 400 by its local-serving path, so no
  request-side control is declared until the gateway normalizes it

* review: omit cost during design-partner phase; name GLM FP4 variant

Costs are deliberately omitted while pricing is in a design-partner
phase and subject to change; a follow-up PR adds [cost] at GA (schema
allows omission). glm-5.2-fp4 gets a display-name override so UIs show
the FP4 serving variant.

* review: restore [cost] with published rates; cache_read = 0

Maintainer asked for cost to always be authored. Real published rates
rather than zeroes (zeroed costs render as free in consumers).
cache_read = 0 is accurate: cached input tokens are not billed.

* chore: drop kimi-k2.6 (model deprecated on CoralBricks)

* coralbricks: update published input rates (GLM $1.12, GPT-OSS $0.12)

* coralbricks: declare reasoning + effort/toggle options (glm effort verified end-to-end)
2026-08-10 15:01:45 -05:00
opencode-agent[bot] 78079f2b69 chore(sync): update OpenRouter model catalog (#4460)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 19:36:57 +00:00
opencode-agent[bot] 06c4501140 chore(sync): update Kilo model catalog (#4459)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 19:36:53 +00:00
opencode-agent[bot] b84da913d2 chore(sync): update LLM Gateway model catalog (#4458)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 19:36:48 +00:00
opencode-agent[bot] 05ff9bc78b chore(sync): update Kilo model catalog (#4457)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 18:33:33 +00:00
opencode-agent[bot] 2bb91ab1dc chore(sync): update OpenRouter model catalog (#4456)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 18:33:31 +00:00
opencode-agent[bot] b8487491bd chore(sync): update Charm Hyper model catalog (#4454)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 13:16:05 -05:00
opencode-agent[bot] a9cb8bfaf6 chore(sync): update Merge Gateway model catalog (#4455)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 17:34:21 +00:00
opencode-agent[bot] 0263641072 chore(sync): update OpenRouter model catalog (#4453)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 16:32:51 +00:00
opencode-agent[bot] efb7ac191e chore(sync): update Cloudflare Workers AI model catalog (#4452)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 14:38:59 +00:00
opencode-agent[bot] 20f3a0f6c4 chore(sync): update Kilo model catalog (#4451)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 14:38:57 +00:00
opencode-agent[bot] 830991b615 chore(sync): update OpenRouter model catalog (#4450)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 14:38:45 +00:00
asomethings 7caff8b6c4 fix(synthetic): correct Kimi-K3 reasoning efforts to low/high/max (#4429) 2026-08-10 09:11:31 -05:00
Aryan Keluskar 2c796b0b43 fix(cloudflare-workers-ai): correct GLM 5.2 token limits (#4422)
* fix(cloudflare-workers-ai): correct GLM 5.2 output limit

* fix(cloudflare-workers-ai): correct GLM 5.2 context limit
2026-08-10 09:11:00 -05:00
rognit 0542ac135a feat(snowflake-cortex): add Claude Opus 5, Sonnet 5, Opus 4.6 and Opus 4.5 (#4417)
* feat(snowflake-cortex): add Claude Opus 5, Sonnet 5, Opus 4.6 and Opus 4.5

* fix(snowflake-cortex): align Claude reasoning_options with tested chat-completions surface

Verified against POST /api/v2/cortex/v1/chat/completions:

- Opus 5 / Sonnet 5: reasoning.effort and reasoning.max_tokens return 400.
  reasoning_effort, output_config.effort and thinking.type return 200 but are
  ignored (reasoning_effort=bogus_zzz also returns 200) and never produce
  reasoning_details, so no caller control is exposed -> [].
- Opus 4.6 / 4.5: reasoning.max_tokens is the only field that actually engages
  thinking (sole case returning reasoning_details) -> budget_tokens. Effort
  values are not read (effort=bogus_zzz behaves identically), and max_tokens=100
  is accepted, so no effort enum and no min bound.
2026-08-10 09:10:38 -05:00
MassimoGirondiEvroc 016bf7dad1 evroc: reduce GLM 5.2 context window, remove Qwen3 VL (#4436) 2026-08-10 09:09:50 -05:00
xiaojie.zj 46d0daaa3b chore(zenmux): mark 15 offline models as deprecated (#4430) 2026-08-10 09:09:34 -05:00
opencode-agent[bot] eefa5f0c00 chore(sync): update Kilo model catalog (#4446)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 13:46:39 +00:00
opencode-agent[bot] 77444f0c61 chore(sync): update OpenRouter model catalog (#4445)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 13:46:31 +00:00
opencode-agent[bot] 1b7a1a3eb7 chore(sync): update Venice model catalog (#4414)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 12:32:38 +00:00
opencode-agent[bot] 4c7dd3dca0 chore(sync): update CrossModel model catalog (#4443)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 11:33:32 +00:00
opencode-agent[bot] 227f0b4130 chore(sync): update Google model catalog (#4439)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 10:41:49 +00:00
opencode-agent[bot] 84256d7508 chore(sync): update Requesty model catalog (#4437)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 09:47:54 +00:00
opencode-agent[bot] 96dd737018 chore(sync): update OpenRouter model catalog (#4435)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 08:49:25 +00:00
opencode-agent[bot] 85b9b7c947 chore(sync): update NanoGPT model catalog (#4434)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 07:53:52 +00:00
opencode-agent[bot] 1c2516ac6a chore(sync): update Deep Infra model catalog (#4433)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 07:53:50 +00:00
opencode-agent[bot] 1a4432a3a2 chore(sync): update Vercel AI Gateway model catalog (#4432)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 06:45:00 +00:00
opencode-agent[bot] cb009a5171 chore(sync): update Kilo model catalog (#4428)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 03:55:15 +00:00
opencode-agent[bot] e8dda3115f chore(sync): update OpenRouter model catalog (#4427)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 03:55:12 +00:00
opencode-agent[bot] c05dfeeac7 chore(sync): update Kilo model catalog (#4425)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 03:00:58 +00:00
opencode-agent[bot] 10fe18dd5e chore(sync): update OpenRouter model catalog (#4424)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 03:00:53 +00:00
opencode-agent[bot] 7372c46ca6 chore(sync): update LLM Gateway model catalog (#4421)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 01:55:16 +00:00
opencode-agent[bot] 736e0f5bed chore(sync): update OpenRouter model catalog (#4423)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 01:55:07 +00:00
opencode-agent[bot] b260c054ab chore(sync): update DigitalOcean model catalog (#4420)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 00:34:55 +00:00
opencode-agent[bot] f6820dda83 chore(sync): update Kilo model catalog (#4419)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-10 00:34:53 +00:00
opencode-agent[bot] 9a75caba45 chore(sync): update OpenRouter model catalog (#4416)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 22:25:55 +00:00
opencode-agent[bot] 14ad4e368e chore(sync): update Kilo model catalog (#4415)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 22:25:49 +00:00
opencode-agent[bot] 9bc16407d1 chore(sync): update Tinfoil model catalog (#4412)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 19:26:39 +00:00
opencode-agent[bot] 0ef98538c6 chore(sync): update Merge Gateway model catalog (#4410)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 11:28:04 -05:00
Aiden Cline 2512651df8 fix(vercel): add Claude Opus 5 Fast with effort options (#4409)
Copy first-party and Vercel Opus 5 reasoning_effort values instead of empty options.
2026-08-09 11:27:39 -05:00
Matt Baker 6623531ef4 Revert "fix(synthetic): cap GLM-5.2 input at real serving limit 365,178 (#4372)" (#4401)
This reverts commit 8b412cdf61.
2026-08-09 11:23:42 -05:00
Muhammad Muzammil 7f7ac845d2 fix(ofox): add GLM-5V-Turbo (#4404)
Add configuration for GLM-5V-Turbo model with pricing and options.
2026-08-09 11:23:30 -05:00
Derek Petersen ccdf24a5ed [Together AI] Increase GLM 5.2 context limit to 512K (#4339) 2026-08-09 11:23:21 -05:00
opencode-agent[bot] be80cac692 chore(sync): update NanoGPT model catalog (#4403)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 11:22:40 -05:00
Aiden Cline 289a4c2e31 fix(merge-gateway): tolerate null reasoning metadata (#4408)
The Gateway catalog emits capabilities.reasoning = null on some routes
even when supports_reasoning is true. Treat null like a missing object
so sync does not crash while deriving reasoning_options.
2026-08-09 11:22:29 -05:00
opencode-agent[bot] 0ab58eb6bc chore(sync): update OpenRouter model catalog (#4407)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 14:26:47 +00:00
opencode-agent[bot] 0aef08510c chore(sync): update Kilo model catalog (#4406)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 14:26:45 +00:00
opencode-agent[bot] cb66b68fd2 chore(sync): update OpenRouter model catalog (#4405)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 13:34:52 +00:00
opencode-agent[bot] 33efad8d60 chore(sync): update OpenRouter model catalog (#4400)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 09:27:25 +00:00
opencode-agent[bot] 834c8bca9b chore(sync): update Kilo model catalog (#4399)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 08:27:33 +00:00
opencode-agent[bot] 9dbe6fa00f chore(sync): update Kilo model catalog (#4397)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 07:37:17 +00:00
opencode-agent[bot] 976c9cc1a4 chore(sync): update OpenRouter model catalog (#4398)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 07:37:10 +00:00
opencode-agent[bot] 3eae95af39 chore(sync): update OpenRouter model catalog (#4396)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 06:30:34 +00:00
opencode-agent[bot] 4509de5f93 chore(sync): update Kilo model catalog (#4395)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 05:34:01 +00:00
opencode-agent[bot] 99470dd0d2 chore(sync): update OpenRouter model catalog (#4394)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 03:50:58 +00:00
opencode-agent[bot] 8b79d03a56 chore(sync): update Deep Infra model catalog (#4391)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 02:57:29 +00:00
cfal 51f2c91c8b feat(alibaba): add deepseek-v4-flash-0731 and glm-5.2 (#4365)
* feat(alibaba): add deepseek-v4-flash-0731 and glm-5.2

Both models are served pay-as-you-go on the international Model Studio
endpoint (dashscope-intl.aliyuncs.com/compatible-mode/v1), but until now
only existed under the plan providers, so callers using DASHSCOPE_API_KEY
directly could not resolve them.

Pricing is the Singapore list in USD/MTok:
  deepseek-v4-flash-0731  0.20 in / 0.40 out / 0.04 implicit cache
  glm-5.2                 1.40 in / 4.40 out / 0.28 implicit cache

reasoning_options follow the same-host siblings: Alibaba exposes
reasoning_effort high|max only (low/medium map to high, xhigh to max) plus
an enable_thinking toggle, and returns reasoning_content.

Sources:
https://www.alibabacloud.com/help/en/model-studio/deepseek-api
https://www.alibabacloud.com/help/en/model-studio/glm
https://www.alibabacloud.com/help/en/model-studio/model-pricing
https://www.qwencloud.com/models/deepseek-v4-flash-0731
https://www.qwencloud.com/models/glm-5.2

* fix(alibaba): expose GLM 5.2 reasoning efforts

---------

Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-08 20:58:10 -05:00
opencode-agent[bot] 78d3e4e734 chore(sync): update OpenRouter model catalog (#4390)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 01:54:42 +00:00
github-actions[bot] 80d8633b83 fix: [missing-model] tinfoil: kimi-k3 (#4383)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-08 20:50:50 -05:00
opencode-agent[bot] a6393f44a2 chore(sync): update Cortecs model catalog (#4353)
* chore(sync): update Cortecs model catalog

* fix(sync): preserve Cortecs reasoning overrides

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-08 20:45:23 -05:00
Faisal 345f14a096 feat(provider): add IBM watsonx.ai catalog (#4379)
Add the native watsonx.ai provider and its active token-priced model metadata.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 20:45:06 -05:00
Andre Landgraf fba4bb7796 Neon: declare structured_output where it does not resolve (#4361) 2026-08-08 20:34:38 -05:00
Carlo Taleon 753b031e77 crof: mark greg-1-mini and kimi-k2.5-lightning as vision models (#4363) 2026-08-08 20:34:28 -05:00
Martin Mose Facondini fec96dd01c refactor(zeldoc): rename z-code model to zdev (#4364)
* refactor(zeldoc): rename z-code model to zdev

* fix(zeldoc): set attachment=true for zdev image input
2026-08-08 20:34:19 -05:00
Andre Landgraf 79be9f9168 Neon: correct the output-token limit on eleven models (#4370)
* Neon: correct the output-token limit on nine models

* Neon: two of the output limits were understated, not overstated
2026-08-08 20:33:35 -05:00
Sanveed Faisal 8b412cdf61 fix(synthetic): cap GLM-5.2 input at real serving limit 365,178 (#4372)
Synthetic's inference backend rejects inputs above 365,178 tokens
("Input length (369084 tokens) exceeds the maximum allowed length
(365178 tokens)") even though the docs and this TOML advertise a
524,288 context. Without an input override, opencode only compacts at
~504K and overruns the real cap, causing hard 400s on long sessions.

The 365,178 value comes from Synthetic's own error message; the
context field stays 524,288 as the nominal window advertised by the
model card.
2026-08-08 20:33:18 -05:00
opencode-agent[bot] 025b5bedb6 chore(sync): update DigitalOcean model catalog (#4388)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 20:33:03 -05:00
opencode-agent[bot] 623cf1200d chore(sync): update Vercel AI Gateway model catalog (#4387)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 20:32:55 -05:00
amrrs 76ab0ae637 feat(nebius): add DeepSeek-V4-Flash (#4377)
* feat(nebius): add DeepSeek-V4-Flash

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

* fix(nebius): author DeepSeek-V4-Flash reasoning controls from the lab entry

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

* fix(nebius): verify DeepSeek-V4-Flash reasoning controls against the live API

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

* fix(nebius): set cache_read price for DeepSeek-V4-Flash

Nebius has no discounted prompt-cache tier, so cached input is billed at the
full input rate. Leaving cache_read unset makes downstream consumers treat it
as $0/M. Same reasoning as #3956 for Kimi-K3.

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 20:32:46 -05:00
opencode-agent[bot] 921de5617d chore(sync): update Kilo model catalog (#4386)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 00:33:14 +00:00
opencode-agent[bot] 5481fc79a0 chore(sync): update OpenRouter model catalog (#4385)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-09 00:33:12 +00:00
opencode-agent[bot] ce26958879 chore(sync): update OpenRouter model catalog (#4384)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 23:25:46 +00:00
opencode-agent[bot] 8cf66e163b chore(sync): update Venice model catalog (#4381)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 21:25:52 +00:00
opencode-agent[bot] ac130151b3 chore(sync): update Charm Hyper model catalog (#4380)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 21:25:47 +00:00
opencode-agent[bot] 10f7a9a3f7 chore(sync): update Vercel AI Gateway model catalog (#4378)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 20:25:53 +00:00
opencode-agent[bot] 458519bea9 chore(sync): update OpenRouter model catalog (#4376)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 18:26:45 +00:00
opencode-agent[bot] 46bbcd0e47 chore(sync): update Kilo model catalog (#4375)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 18:26:39 +00:00
opencode-agent[bot] d1b3097de9 chore(sync): update Baseten model catalog (#4374)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 17:26:00 +00:00
opencode-agent[bot] beca303ea3 chore(sync): update OpenRouter model catalog (#4369)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 16:26:23 +00:00
opencode-agent[bot] a48b5f24d5 chore(sync): update Kilo model catalog (#4371)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 15:26:29 +00:00
opencode-agent[bot] cbea972ca5 chore(sync): update Kilo model catalog (#4367)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 14:26:10 +00:00
opencode-agent[bot] bc3b66caab chore(sync): update OpenRouter model catalog (#4368)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 13:32:42 +00:00
opencode-agent[bot] 33a05949bc chore(sync): update Deep Infra model catalog (#4366)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 12:27:01 +00:00
opencode-agent[bot] be16bde6b6 chore(sync): update OpenRouter model catalog (#4362)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 08:27:27 +00:00
opencode-agent[bot] e68645e4eb chore(sync): update OpenRouter model catalog (#4360)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 07:34:18 +00:00
opencode-agent[bot] dab85411f8 chore(sync): update OpenRouter model catalog (#4359)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 06:27:39 +00:00
opencode-agent[bot] 0f8cbb1e8d chore(sync): update Kilo model catalog (#4355)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 05:30:49 +00:00
opencode-agent[bot] b7f7845a54 chore(sync): update OpenRouter model catalog (#4358)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 05:30:44 +00:00
opencode-agent[bot] d733fc15cf chore(sync): update EmpirioLabs AI model catalog (#4357)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 05:30:39 +00:00
opencode-agent[bot] f81a5629c8 chore(sync): update OpenRouter model catalog (#4356)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 04:36:57 +00:00
opencode-agent[bot] 2c6b978f38 chore(sync): update Kilo model catalog (#4354)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 03:45:40 +00:00
opencode-agent[bot] b0839dd932 chore(sync): update OpenRouter model catalog (#4352)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 03:45:34 +00:00
Maksim ac1baca7ff Add SaladCloud AI Gateway provider (#4056)
* Add SaladCloud AI Gateway provider

* Remove beta status from SaladCloud model
2026-08-07 22:14:26 -05:00
Daniele Scasciafratte 3f9a925b18 Updated Regolo.AI models (#4074)
* feat(models): updated

* fix(regolo-ai): align reasoning_options with lab+peer controls, document free pricing

- gemma4-31b: toggle only (matches Google lab + OpenRouter peer)
- glm5.2: effort high|max (matches Zhipu lab)
- qwen3.6-27b: toggle only (matches OpenRouter peer; Regolo can't forward budget_tokens)
- deepseek-ocr-2: add free pricing comment
- faster-whisper-large-v3: add free pricing comment + name override
- Move all toggle/effort comments to leading header block (sync strips mid-file)
2026-08-07 22:14:13 -05:00
opencode-agent[bot] ea66ffc3d2 chore(sync): update OpenRouter model catalog (#4351)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 02:55:07 +00:00
opencode-agent[bot] 373f4ab181 chore(sync): update Kilo model catalog (#4350)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 02:55:01 +00:00
Andre Landgraf 96d7f403a9 Neon: correct temperature on eight models (#4329)
* Neon: gemini-3-6-flash does not accept temperature

* Neon: correct temperature on eight models
2026-08-07 21:28:28 -05:00
opencode-agent[bot] 8ef55aa5da chore(sync): update OpenRouter model catalog (#4349)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 01:54:31 +00:00
opencode-agent[bot] b1d8979af0 chore(sync): update Kilo model catalog (#4348)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 00:31:51 +00:00
opencode-agent[bot] 7c6affc36a chore(sync): update OpenRouter model catalog (#4347)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 00:31:50 +00:00
opencode-agent[bot] 8bac34666f chore(sync): update DigitalOcean model catalog (#4346)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-08 00:31:45 +00:00
opencode-agent[bot] 817f7586c9 chore(sync): update DigitalOcean model catalog (#4345)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 23:26:47 +00:00
opencode-agent[bot] 2c8ddc1d95 chore(sync): update OpenRouter model catalog (#4344)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 23:26:39 +00:00
opencode-agent[bot] 687855f15c chore(sync): update OpenRouter model catalog (#4343)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 22:26:44 +00:00
opencode-agent[bot] f4248329f9 chore(sync): update OpenRouter model catalog (#4342)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 21:27:35 +00:00
opencode-agent[bot] ac01bd9085 chore(sync): update Vercel AI Gateway model catalog (#4341)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 20:27:41 +00:00
opencode-agent[bot] 93e183d9b3 chore(sync): update OpenRouter model catalog (#4340)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 20:27:38 +00:00
opencode-agent[bot] 45d22618ee chore(sync): update Weights & Biases model catalog (#4336)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 19:36:16 +00:00
opencode-agent[bot] 42c98e9497 chore(sync): update OpenRouter model catalog (#4338)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 19:36:11 +00:00
opencode-agent[bot] ce6a5f2f7d chore(sync): update Kilo model catalog (#4337)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 18:31:42 +00:00
opencode-agent[bot] 481743e196 chore(sync): update LLM Gateway model catalog (#4335)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 18:31:36 +00:00
opencode-agent[bot] 893cbf0586 chore(sync): update OpenRouter model catalog (#4334)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 18:31:32 +00:00
opencode-agent[bot] 82f31f6849 chore(sync): update Kilo model catalog (#4333)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 17:33:18 +00:00
opencode-agent[bot] 34dfa35364 chore(sync): update OpenRouter model catalog (#4332)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 17:33:09 +00:00
opencode-agent[bot] 602c9b903c chore(sync): update OpenRouter model catalog (#4331)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 16:33:24 +00:00
opencode-agent[bot] 5261b4401a chore(sync): update OpenRouter model catalog (#4330)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 15:34:26 +00:00
opencode-agent[bot] 773af97f9b chore(sync): update Charm Hyper model catalog (#4325)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 09:59:08 -05:00
sk0x0y 511ddc2977 Update Kimi K3 reasoning options and add kimi-k3-fast to neuralwatt (#4090)
* Update Kimi K3 reasoning options and add kimi-k3-fast to neuralwatt

Neuralwatt now exposes the full K3 reasoning surface: a per-request
thinking toggle and graded reasoning effort. The previous toggle-only
entry no longer matches the live API. Verified against the live API on
2026-08-05 and aligned with the first-party moonshotai baseline plus
~19 peer relays.

- models/moonshotai/kimi-k3.toml: fix base description (toggleable ->
  configurable low/high/max effort)
- providers/neuralwatt/models/kimi-k3.toml: reasoning_options now
  toggle (chat_template_kwargs.enable_thinking) + effort(low/high/max);
  drop redundant inherited name. thinking_token_budget is documented but
  rejected by the current vLLM V2 runner, so it is not declared.
- providers/neuralwatt/models/kimi-k3-fast.toml: add non-reasoning
  variant (reasoning = false, same pricing)

* Revert unnecessary kimi-k3 lab description change

Address reviewer feedback on #4090: keep the lab model description as-is.

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 09:58:57 -05:00
opencode-agent[bot] 083d675121 chore(sync): update LLM Gateway model catalog (#4317)
* chore(sync): update LLM Gateway model catalog

* fix(llmgateway): add Muse Spark reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-07 09:53:44 -05:00
opencode-agent[bot] 8a1635b3ec chore(sync): update Cortecs model catalog (#4318)
* chore(sync): update Cortecs model catalog

* fix(cortecs): add Gemini reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-07 09:53:38 -05:00
C.C. 35938b7603 provider(vivgrid): add deepseek-v4-flash 0731 and kimi-k3 (#4313)
* provider(vivgrid): add deepseek-v4-flash 0731 and kimi-k3

* fix

* fix
2026-08-07 09:52:07 -05:00
Mathias Stearn 040b5a5486 Fix Kimi K3 prices on copilot (#4314)
Based on https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing#moonshot-ai
2026-08-07 09:51:17 -05:00
opencode-agent[bot] 3db0161194 chore(sync): update NanoGPT model catalog (#4322)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 09:50:30 -05:00
Andre Landgraf 2f16f5e578 Neon: add kimi-k3, gemini-3-6-flash, gemini-3-5-flash-lite, and the missing gpt-5-5-pro cost (#4324)
* Neon: add kimi-k3, gemini-3-6-flash, gemini-3-5-flash-lite

* Neon: add the missing gpt-5-5-pro cost

The entry shipped without [cost] because no databricks provider entry exists for it and
the rule was to omit rather than publish an unsourceable rate. The rate is sourceable:
OpenAI's own gpt-5.5-pro entry has 30/180 with a 272k tier at 60/270, and Databricks'
published DBU rate for GPT 5.4/5.5 Pro reconciles to the same four numbers at the
$0.07/DBU rate every other neon entry already implies.
2026-08-07 09:50:23 -05:00
opencode-agent[bot] ef11de94c1 chore(sync): update Kilo model catalog (#4328)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 14:36:02 +00:00
opencode-agent[bot] 98ad9ab6e8 chore(sync): update OpenRouter model catalog (#4327)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 14:35:51 +00:00
opencode-agent[bot] 433e98fb61 chore(sync): update OpenRouter model catalog (#4323)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 11:32:25 +00:00
opencode-agent[bot] 9f9d1fd9c2 chore(sync): update Kilo model catalog (#4321)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 11:32:13 +00:00
opencode-agent[bot] f66381f91e chore(sync): update Charm Hyper model catalog (#4320)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 10:33:10 +00:00
opencode-agent[bot] 6a22fe125a chore(sync): update Kilo model catalog (#4308)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 09:36:44 +00:00
opencode-agent[bot] a9c5cd4efd chore(sync): update OpenRouter model catalog (#4319)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 09:36:43 +00:00
Jack 54579eebd7 add ling-3.0-tiny-free to opencode zen 2026-08-07 17:11:53 +08:00
opencode-agent[bot] 06433f933c chore(sync): update OpenRouter model catalog (#4316)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 08:36:41 +00:00
opencode-agent[bot] 3a1c5c769c chore(sync): update LLM Gateway model catalog (#4315)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 08:36:32 +00:00
Frank e951706c7e update zen models 2026-08-07 04:31:14 -04:00
opencode-agent[bot] 8515b0748f chore(sync): update OpenRouter model catalog (#4312)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 07:45:23 +00:00
opencode-agent[bot] b98aba27b3 chore(sync): update OpenRouter model catalog (#4311)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 06:41:45 +00:00
opencode-agent[bot] 6703defcd6 chore(sync): update Vercel AI Gateway model catalog (#4310)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 06:41:42 +00:00
Jack 92a7a4d56f ds flash x2 promo in opencode go 2026-08-07 14:32:49 +08:00
opencode-agent[bot] 43f6b2386a chore(sync): update Cortecs model catalog (#4309)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 05:49:30 +00:00
opencode-agent[bot] 3db1d5bc3f chore(sync): update OpenRouter model catalog (#4307)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 05:49:29 +00:00
m3 90aa167cda feat(github-copilot): add Kimi K3 (#4127) 2026-08-07 00:18:52 -05:00
opencode-agent[bot] bbbf28b1cd chore(sync): update Venice model catalog (#4304)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:09:51 -05:00
opencode-agent[bot] 6bf9e38755 chore(sync): update EmpirioLabs AI model catalog (#4301)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:09:44 -05:00
opencode-agent[bot] 1793e99d48 chore(sync): update DigitalOcean model catalog (#4294)
* chore(sync): update DigitalOcean model catalog

* fix(digitalocean): add DeepSeek V4 Flash reasoning options

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-07 00:09:33 -05:00
opencode-agent[bot] 016be36712 chore(sync): update NanoGPT model catalog (#4305)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:09:25 -05:00
opencode-agent[bot] 50a7322b55 chore(sync): update Cortecs model catalog (#4306)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:09:15 -05:00
opencode-agent[bot] d05d097d93 chore(sync): update Chutes model catalog (#4303)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:08:53 -05:00
opencode-agent[bot] 080cd5d2b8 chore(sync): update Kilo model catalog (#4300)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:08:44 -05:00
opencode-agent[bot] 5fc7266daa chore(sync): update Vercel AI Gateway model catalog (#4299)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 00:08:33 -05:00
opencode-agent[bot] 00df4bbb21 chore(sync): update OpenRouter model catalog (#4302)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 04:56:44 +00:00
github-actions[bot] 12e1ab17ea fix: [missing-model] ofox: z-ai/glm-5.1 (#4293)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:56:33 -05:00
github-actions[bot] 209527dbc1 fix: [missing-model] ofox: deepseek/deepseek-v3.2 (#4292)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:56:04 -05:00
github-actions[bot] 3856787cc0 fix: [missing-model] ofox: openai/gpt-5-mini (#4291)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:55:35 -05:00
github-actions[bot] 126dbce8e7 fix: [missing-model] ofox: z-ai/glm-4.7 (#4290)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:55:06 -05:00
github-actions[bot] d23667c951 fix: [missing-model] ofox: z-ai/glm-4.6 (#4289)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:54:36 -05:00
github-actions[bot] 227c763879 fix: [missing-model] ofox: z-ai/glm-4.7-flashx (#4288)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:54:07 -05:00
github-actions[bot] af89437ac9 fix: [missing-model] ofox: x-ai/grok-4.20 (#4287)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:53:37 -05:00
github-actions[bot] 144a27ee4b fix: [missing-model] ofox: bailian/qwen-max (#4286)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:53:08 -05:00
github-actions[bot] 910220536d fix: [missing-model] ofox: google/gemini-3.6-flash (#4285)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:52:37 -05:00
github-actions[bot] b1a329912b fix: [missing-model] ofox: openai/gpt-4.1-mini (#4284)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:52:07 -05:00
github-actions[bot] 8742ddebd5 fix: [missing-model] ofox: x-ai/grok-4.1-fast (#4283)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:51:38 -05:00
github-actions[bot] e2d2049119 fix: [missing-model] ofox: openai/gpt-5.4-mini (#4282)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:51:09 -05:00
github-actions[bot] 3832879428 fix: [missing-model] ofox: z-ai/glm-5-turbo (#4281)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:50:39 -05:00
github-actions[bot] fbe378b12d fix: [missing-model] ofox: moonshotai/kimi-k2.5 (#4280)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:50:10 -05:00
github-actions[bot] 9df6d29df4 fix: [missing-model] ofox: openai/gpt-5 (#4279)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:49:40 -05:00
github-actions[bot] ebd0941d54 fix: [missing-model] ofox: bailian/qwen3.6-max-preview (#4278)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:49:10 -05:00
github-actions[bot] 4fbc22b09b fix: [missing-model] ofox: openai/gpt-5.4-nano (#4277)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:48:41 -05:00
github-actions[bot] 9e6a68cb44 fix: [missing-model] ofox: openai/gpt-4.1 (#4276)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:48:12 -05:00
github-actions[bot] 3add40b343 fix: [missing-model] ofox: z-ai/glm-5 (#4275)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:47:43 -05:00
github-actions[bot] 830f5f4181 fix: [missing-model] ofox: google/gemini-2.5-pro (#4274)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:47:14 -05:00
github-actions[bot] 0682058bde fix: [missing-model] ofox: moonshotai/kimi-k3 (#4273)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:46:44 -05:00
github-actions[bot] 150c6d32cb fix: [missing-model] ofox: openai/gpt-5.2-codex (#4272)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:46:15 -05:00
github-actions[bot] a3993dd382 fix: [missing-model] ofox: deepseek/deepseek-v4-flash (#4271)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:45:46 -05:00
github-actions[bot] 2ec1de4120 fix: [missing-model] ofox: openai/gpt-5.1-codex-mini (#4270)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:45:17 -05:00
github-actions[bot] d9684f7262 fix: [missing-model] ofox: moonshotai/kimi-k2.7-code-highspeed (#4269)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:44:48 -05:00
github-actions[bot] 06cdf2939e fix: [missing-model] ofox: openai/gpt-5.1 (#4268)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:44:18 -05:00
github-actions[bot] 7e412f5129 fix: [missing-model] ofox: openai/gpt-5.2 (#4267)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:43:49 -05:00
github-actions[bot] 9c1dcb9565 fix: [missing-model] ofox: openai/gpt-5.1-codex-max (#4266)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:43:19 -05:00
github-actions[bot] 0c169952a4 fix: [missing-model] ofox: google/gemini-2.5-flash-lite (#4265)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:42:50 -05:00
github-actions[bot] d5a0db202f fix: [missing-model] ofox: bailian/qwen3.6-flash (#4264)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:42:20 -05:00
github-actions[bot] 542db24841 fix: [missing-model] ofox: bailian/qwen3-max (#4263)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:41:51 -05:00
github-actions[bot] 0d40968bc2 fix: [missing-model] ofox: bailian/qwen-flash (#4262)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:41:21 -05:00
github-actions[bot] d7cf8b9325 fix: [missing-model] ofox: google/gemini-2.5-flash (#4261)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:40:52 -05:00
github-actions[bot] 82f0b81c0e fix: [missing-model] ofox: openai/gpt-4o-mini (#4260)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:40:22 -05:00
github-actions[bot] 85e2cdc7ef fix: [missing-model] ofox: bailian/qwen-turbo (#4259)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:39:53 -05:00
github-actions[bot] c7a76ddc5c fix: [missing-model] ofox: bailian/qwen3.7-plus (#4258)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:39:24 -05:00
github-actions[bot] 51342d96c9 fix: [missing-model] ofox: bailian/qwen-vl-max (#4257)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:38:55 -05:00
github-actions[bot] 713d61518d fix: [missing-model] ofox: bailian/qwen3.5-flash (#4256)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:38:25 -05:00
github-actions[bot] 54fa8a66a6 fix: [missing-model] ofox: bailian/qwen3.8-max (#4255)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:37:56 -05:00
github-actions[bot] a2911813ca fix: [missing-model] ofox: openai/gpt-4o (#4254)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:37:27 -05:00
github-actions[bot] 406e2f7b42 fix: [missing-model] ofox: google/gemini-3.1-flash-lite (#4253)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:36:58 -05:00
github-actions[bot] b8d0a7159a fix: [missing-model] ofox: google/gemini-3.5-flash (#4252)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:36:28 -05:00
github-actions[bot] 5552961c33 fix: [missing-model] ofox: google/gemini-3-flash-preview (#4251)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:35:59 -05:00
github-actions[bot] 4e678a7f32 fix: [missing-model] ofox: bailian/qwen3.5-397b-a17b (#4250)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:35:29 -05:00
github-actions[bot] a82e493c53 fix: [missing-model] ofox: bailian/qwen3-coder-plus (#4249)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:35:00 -05:00
github-actions[bot] 3f876ee3bc fix: [missing-model] ofox: bailian/qwen3.5-122b-a10b (#4248)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:34:31 -05:00
github-actions[bot] 56058fc284 fix: [missing-model] ofox: bailian/qwen3-coder-next (#4247)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:34:01 -05:00
github-actions[bot] af53260646 fix: [missing-model] ofox: bailian/qwen3.6-27b (#4246)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:33:21 -05:00
github-actions[bot] b0fdb7fe0b fix: [missing-model] ofox: bailian/qwen3.6-plus (#4245)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:32:51 -05:00
github-actions[bot] 99286d7561 fix: [missing-model] ofox: anthropic/claude-sonnet-4.6 (#4244)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:32:22 -05:00
github-actions[bot] 075fd8414d fix: [missing-model] ofox: anthropic/claude-haiku-4.5 (#4243)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:31:53 -05:00
github-actions[bot] d089bd3b04 fix: [missing-model] ofox: anthropic/claude-opus-4.5 (#4242)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:31:23 -05:00
github-actions[bot] 7ff2243f1f fix: [missing-model] ofox: bailian/qwen3.5-27b (#4241)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:30:54 -05:00
github-actions[bot] f9b4a139de fix: [missing-model] ofox: bailian/qwen3.5-plus (#4240)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:30:24 -05:00
github-actions[bot] c023f9f2fa fix: [missing-model] ofox: bailian/qwen3-coder-flash (#4239)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:29:55 -05:00
github-actions[bot] 61fa21a134 fix: [missing-model] ofox: anthropic/claude-opus-4.6 (#4238)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:29:26 -05:00
github-actions[bot] 9344a6b5ee fix: [missing-model] ofox: anthropic/claude-opus-5 (#4223)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:28:38 -05:00
opencode-agent[bot] 43379b3140 chore(sync): update Vercel AI Gateway model catalog (#4134)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:26:51 -05:00
opencode-agent[bot] ef7b1c5e97 chore(sync): update NanoGPT model catalog (#4144)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:26:40 -05:00
opencode-agent[bot] 36e3e9e22a chore(sync): update Kilo model catalog (#4154)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:26:32 -05:00
github-actions[bot] 8ab8b210e1 fix: [missing-model] ofox: anthropic/claude-opus-4.7 (#4210)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 23:26:09 -05:00
opencode-agent[bot] f4f7b97a7c chore(sync): update OpenRouter model catalog (#4298)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 04:14:00 +00:00
opencode-agent[bot] fdec1e0d67 chore(sync): update OpenRouter model catalog (#4297)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 03:16:41 +00:00
opencode-agent[bot] f37eac7075 chore(sync): update EmpirioLabs AI model catalog (#4152)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 01:27:39 +00:00
opencode-agent[bot] 51f49882bc chore(sync): update OpenRouter model catalog (#4295)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-07 01:27:38 +00:00
opencode-agent[bot] 23b7b63f06 chore(sync): update CrossModel model catalog (#4157)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:32:50 +00:00
opencode-agent[bot] 873f5d02fb chore(sync): update OpenRouter model catalog (#4150)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:32:43 +00:00
opencode-agent[bot] 46c73f5881 chore(sync): update Deep Infra model catalog (#4147)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:32:41 +00:00
opencode-agent[bot] cf294915f7 chore(sync): update Baseten model catalog (#4143)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 23:32:37 +00:00
Frank 6951484e98 update zen models 2026-08-06 19:28:31 -04:00
m3 27bcaba57a fix(baseten): correct DeepSeek V4 Flash 0731 output limit (#4126) 2026-08-06 13:15:56 -05:00
Aiden Cline 11304b3bba fix(sync): track missing Pioneer and Ofox models (#4125) 2026-08-06 13:15:34 -05:00
Lee-Si-Yoon e50ccc3922 chore(friendli): remove Qwen3-235B-A22B-Instruct-2507 (#4109)
Model no longer served by Friendli API. Sync script confirms it as orphaned; deleting to keep the catalog in sync.
2026-08-06 10:32:15 -05:00
opencode-agent[bot] 81851ecdf2 chore(sync): update NanoGPT model catalog (#4111)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 10:32:00 -05:00
opencode-agent[bot] 2cb71de15b chore(sync): update Vercel AI Gateway model catalog (#4110)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 10:31:48 -05:00
Denis 4708b65333 feat(providers/azure): add Kimi K2.7 Code (#4081)
* feat(providers/azure): add Kimi K2.7 Code

* fix(providers/azure): inherit attachment from base model for kimi-k2.7-code

---------

Co-authored-by: Denis Kot <denis.kot@makersite.de>
2026-08-06 10:31:26 -05:00
github-actions[bot] d23fad9223 fix: alibaba/qwen3.8-max appears to support pdf for modalities.input (#4116)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-06 10:31:09 -05:00
Andre Landgraf 76ad71d8dc Neon: use the provider-prefixed dialect paths (#4114)
* Neon: use the short dialect paths

* Neon: Gemini route drops its /v1 prefix
2026-08-06 10:30:54 -05:00
Ishan Chhatbar d1f203f552 Added phi-4-mini model .toml file to models/microsoft/ (#4120) 2026-08-06 10:30:29 -05:00
Andrew Avery a39260825d fix(anthropic): drop fast mode from Opus 4.6 and 4.7 (#4123)
* fix(anthropic): drop fast mode from claude-opus-4-6

* fix(anthropic): drop fast mode from claude-opus-4-7
2026-08-06 10:30:21 -05:00
Sung Kim f1f6a6efda provider(upstage): add Solar Pro 4 (#4124)
Add solar-pro4 (alias of solar-pro4-260806, released 2026-08-06):
512K context, 128K max output, reasoning on by default with
none/minimal/low/medium/high/xhigh/max effort levels, tool calling
and structured outputs. Pricing $0.30/$1.20 per 1M tokens
($0.06 cached input). Specs from console.upstage.ai model catalog.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 10:29:28 -05:00
opencode-agent[bot] d891e73dd5 chore(sync): update Kilo model catalog (#4112)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 10:29:19 -05:00
opencode-agent[bot] f6de50c7cb chore(sync): update Charm Hyper model catalog (#4122)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 15:00:58 +00:00
opencode-agent[bot] 48917f7313 chore(sync): update OpenRouter model catalog (#4121)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 13:56:13 +00:00
opencode-agent[bot] dd797cad76 chore(sync): update OpenRouter model catalog (#4119)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 12:55:28 +00:00
opencode-agent[bot] b7da756b73 chore(sync): update Cortecs model catalog (#4118)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 11:57:03 +00:00
opencode-agent[bot] e8fff96d51 chore(sync): update LLM Gateway model catalog (#4117)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 09:14:17 +00:00
opencode-agent[bot] 1d09b08b8c chore(sync): update Pioneer model catalog (#4099)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 23:39:48 -05:00
opencode-agent[bot] ca2962fa91 chore(sync): update Charm Hyper model catalog (#4077)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:51:26 -05:00
opencode-agent[bot] 637a504d08 chore(sync): update Kilo model catalog (#4082)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:51:14 -05:00
Andre Landgraf 683c46088f Neon: add 10 models, remove 7 (#4087) 2026-08-05 22:51:00 -05:00
opencode-agent[bot] d23fff04d9 chore(sync): update NanoGPT model catalog (#4098)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:43:37 -05:00
opencode-agent[bot] 0b3c410a01 chore(sync): update Hugging Face model catalog (#4094)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:42:54 -05:00
opencode-agent[bot] 5f0a9ea389 chore(sync): update Deep Infra model catalog (#4096)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:42:06 -05:00
opencode-agent[bot] 30fa0ece72 chore(sync): update Vercel AI Gateway model catalog (#4100)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:41:58 -05:00
Aiden Cline 27b7ee5a55 feat(meta): add Muse Spark 1.2 (#4108)
* feat(meta): add Muse Spark 1.2

* fix(meta): correct Muse Spark output limit
2026-08-05 22:41:49 -05:00
opencode-agent[bot] 17052bfcfb chore(sync): update Cortecs model catalog (#4091)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:31:17 -05:00
Santh bf760b8498 baseten: refresh reasoning_effort values from Baseten's docs (#4106)
* baseten: refresh reasoning_effort values from Baseten's docs

Baseten's reasoning page has grown a "Control reasoning depth" table since
these entries were written, and each entry's own comment cites that page. The
values there now differ from what we ship:

  GLM 5.2 / GLM 5.2 Fast  toggle  ->  none | high | max
  OpenAI GPT 120B         low | medium | high  ->  full none..max scale
  DeepSeek V4 Pro         low..xhigh           ->  full none..max scale
  Kimi K3                 no options           ->  none | low | high | max

The GLM 5.2 routes matter most: the docs state the endpoint returns a 400 for
any value outside its set, so describing them as a toggle both hides the two
depths that work and leaves a consumer no way to know the rest are rejected.

Every value above comes from the "Supported values" table on
https://docs.baseten.co/inference/model-apis/reasoning

* baseten: drop the inferred effort scale from DeepSeek V4 Flash 0731

This entry's own comment says the values were reached by "mirroring the
DeepSeek V4 Pro entry" rather than read from Baseten's docs, and the mirror
does not hold. V4 Flash is absent from the "Control reasoning depth" table,
and the reasoning page warns that models outside that table accept
reasoning_effort and ignore it, so the four values here describe a control
that does nothing.

The model matrix does list its reasoning as "Enabled by default", so it keeps
an empty reasoning_options: it reasons, with no addressable depth. Split from
the previous commit because this one drops values rather than citing them.

https://docs.baseten.co/inference/model-apis/overview
https://docs.baseten.co/inference/model-apis/reasoning
2026-08-05 22:29:06 -05:00
opencode-agent[bot] 4e6a0aab05 chore(sync): update OpenRouter model catalog (#4107)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 03:23:59 +00:00
opencode-agent[bot] a669b1f084 chore(sync): update DigitalOcean model catalog (#4103)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 00:47:15 +00:00
opencode-agent[bot] 418e9f3bb9 chore(sync): update OpenRouter model catalog (#4102)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-06 00:47:12 +00:00
opencode-agent[bot] 4ffd7a121b chore(sync): update OpenRouter model catalog (#4101)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 22:37:14 +00:00
opencode-agent[bot] 7e6450edad chore(sync): update Venice model catalog (#4093)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 21:41:49 +00:00
opencode-agent[bot] 6c97a48f12 chore(sync): update Cloudflare Workers AI model catalog (#4097)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 20:42:31 +00:00
opencode-agent[bot] cda786c3ec chore(sync): update Weights & Biases model catalog (#4095)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 20:42:30 +00:00
opencode-agent[bot] 0a92009df2 chore(sync): update OpenRouter model catalog (#4092)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 20:42:28 +00:00
Samrath 43ff4ad9b5 feat(pioneer): add 26 models (Kimi K3, Claude Opus 5, GPT-5.6) (#3814)
* fix(pioneer): filter API alias dupes, derive cost, honor base-model reasoning

Pioneer /v1/models returns each served model twice: once under its real
id and once under a duplicate "anthropic/pioneer/<id>" alias. Drop the
aliases so the sync no longer authors phantom "anthropic/pioneer/*" TOMLs.

Also derive cost from the API's per-1M-token prices for newly created
models (previously cost was only preserved from an existing file), and
trust the base model's authored reasoning flag instead of Pioneer's
boilerplate reasoning levels, which are identical for every model and
were wrongly marking non-reasoning models (e.g. Pixtral) as reasoning.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(pioneer): add frontier and open models via base_model inheritance

Add 26 Pioneer models, each inheriting provider-agnostic facts through
base_model rather than duplicating them inline.

New model metadata entries:
- anthropic/claude-opus-5 (released 2026-07-24)
- alibaba/qwen2.5-coder-0.5b, alibaba/qwen3-235b-a22b-instruct-2507
- deepseek/deepseek-v3, deepseek/deepseek-v3.1
- meta/llama-3.2-1b, meta/llama-3.2-3b
- mistral/codestral-22b-v0.1, mistral/magistral-small-2506,
  mistral/ministral-8b-instruct-2410

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(qwen): set tool_call=false for Qwen2.5-Coder-0.5B base model

The served id and weights are the base (pretrained) checkpoint, not the
Instruct variant. The Qwen model card states base models are not
recommended for conversation and documents no tool/function calling, so
tool_call=true was inaccurate. Matches the Llama base entries in this PR.

---------

Co-authored-by: Samrath <samrath@Samraths-MacBook-Pro-6.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 15:19:10 -05:00
opencode-agent[bot] 22071a018b chore(sync): update Anthropic model catalog (#4089)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 19:50:44 +00:00
opencode-agent[bot] f5576c9d1f chore(sync): update OpenRouter model catalog (#4088)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 19:50:37 +00:00
opencode-agent[bot] ced6da1acd chore(sync): update LLM Gateway model catalog (#4085)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 16:50:32 +00:00
opencode-agent[bot] 2871b3b14a chore(sync): update Vercel AI Gateway model catalog (#4084)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 16:50:27 +00:00
opencode-agent[bot] 282300a0b1 chore(sync): update OpenRouter model catalog (#4083)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 16:50:21 +00:00
opencode-agent[bot] 5c2fbc0557 chore(sync): update Cortecs model catalog (#4079)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 16:50:15 +00:00
opencode-agent[bot] 6f5c54494c chore(sync): update OpenRouter model catalog (#4080)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 15:57:02 +00:00
opencode-agent[bot] 748e896f2a chore(sync): update Kilo model catalog (#4078)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 15:56:51 +00:00
opencode-agent[bot] 24ee9f1e11 chore(sync): update Ambient model catalog (#4076)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 15:56:47 +00:00
opencode-agent[bot] 0729b646c3 chore(sync): update Merge Gateway model catalog (#4061)
* chore(sync): update Merge Gateway model catalog

* fix(merge-gateway): add Gemini image reasoning options

* Revert "fix(merge-gateway): add Gemini image reasoning options"

This reverts commit 16714a758b73577f8d21bb803d0f112494d37512.

---------

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-05 10:35:24 -05:00
opencode-agent[bot] f43a8fe306 chore(sync): update NanoGPT model catalog (#4067)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 10:21:06 -05:00
opencode-agent[bot] 5d4ddc4c21 chore(sync): update Kilo model catalog (#4075)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 10:19:07 -05:00
Asmae_ELAZRAK f6627a980c feat(sync): add Cortecs model sync (#3903)
* feat(sync): add Cortecs model sync

* fix: review bot comments

* fix: model update

* fix: output field

* fix: model update

* test(sync): preserve Cortecs reasoning options

---------

Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-08-05 10:06:53 -05:00
opencode-agent[bot] 47c4a91b63 chore(sync): update Charm Hyper model catalog (#4073)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 13:56:10 +00:00
opencode-agent[bot] 84013a7526 chore(sync): update OpenRouter model catalog (#4072)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 13:56:07 +00:00
opencode-agent[bot] e19e7c6719 chore(sync): update LLM Gateway model catalog (#4069)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 10:10:41 +00:00
opencode-agent[bot] 241a198438 chore(sync): update Vercel AI Gateway model catalog (#4068)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 08:06:00 +00:00
Jack 20b5a4c8c0 add qwen3.8-Max to Go 2026-08-05 13:21:22 +08:00
opencode-agent[bot] 45c6961ba4 chore(sync): update Pioneer model catalog (#4065)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 22:15:06 -05:00
Abel Debalkew 582eaaa208 fix(sync): emit toggle + effort from reasoning.effort_values (#4060)
The merge-gateway sync synthesized a bare reasoning toggle from
disable_supported and ignored reasoning.controls, so claude-opus-5 (newly
added, no curated reasoning_options) got a bare [[reasoning_options]] toggle
even though the route advertises a graded reasoning.effort control. The rest
of the Claude family carried toggle + effort because their options were
hand-authored; any future new model would regress the same way.

Map reasoning.controls into synthesized options: toggle when disable is
supported, plus effort when the route advertises effort and the API provides
effort_values. Author claude-opus-5's TOML to toggle + effort [low..max],
matching the family.
2026-08-04 20:25:07 -05:00
opencode-agent[bot] 2ba67e073f chore(sync): update DigitalOcean model catalog (#4066)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 00:49:25 +00:00
opencode-agent[bot] 533b238f7e chore(sync): update Kilo model catalog (#4064)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-05 00:49:20 +00:00
murdurn 701cc45818 feat(cortecs): add deepseek-v4-flash-0731 (#4062)
* feat(cortecs): add deepseek-v4-flash-0731

* Moved EUR→USD note to file header

Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>

---------

Co-authored-by: murdurn <murdurn@pm.me>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
2026-08-04 19:16:10 -05:00
opencode-agent[bot] 6389cefe96 chore(sync): update DigitalOcean model catalog (#4063)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 22:38:28 +00:00
opencode-agent[bot] 5bd21b414b chore(sync): update Kilo model catalog (#4059)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 18:49:18 +00:00
Frank ce328e5e9d update zen models 2026-08-04 14:24:17 -04:00
bhuvankakkar 6838fe6067 feat(scx): add SCX.ai provider with gpt-oss-120b and MiniMax-M2.7 (#3085)
* feat(scx): add SCX.ai provider with coder and MiniMax-M2.7 models

* feat(scx): list gpt-oss-120b, correct MiniMax-M2.7, drop coder

Scope the SCX.ai provider to its coding models.

- add gpt-oss-120b (inherits openai/gpt-oss-120b)
- remove coder
- correct MiniMax-M2.7 limits and capabilities

Values verified against the live SCX API (/v1/models and
/v1/chat/completions) rather than documentation:

- MiniMax-M2.7 context 191_000 -> 192_000, output 8_000 -> 4_096
- both models accept reasoning_effort low/medium/high; the API
  rejects any other value with 400, so reasoning_options is
  declared as an effort enum instead of an empty list
- both return tool_calls and support json_mode, so
  structured_output is set on MiniMax-M2.7

* fix(scx): compliant logo, correct MiniMax-M2.7 output limit

Address automated review feedback on the provider.

- logo.svg: re-export the SCX mark with a square viewBox and
  currentColor, dropping the fixed width/height and the hardcoded
  #262626 fill, per the logo guidelines in AGENTS.md
- MiniMax-M2.7: max output 4_096 -> 64_000
- move the reasoning_effort provenance notes out of the TOMLs and
  into the PR description

* feat(scx): use square knockout icon for the provider logo

Replace the wordmark export with the SCX mark: a single path whose
letterforms are cut out with fill-rule="evenodd", so the glyphs read as
holes and the icon inverts correctly between light and dark themes.

- square viewBox (0 0 512 512), no fixed width/height
- fill="currentColor", no hardcoded brand colours
- letterforms taken from the official brand SVG rather than traced

* feat(scx): add USD pricing for both models

Cost is USD per 1M tokens, matching the SCX rates already carried in
theopenco/llmgateway so the two registries stay consistent.

- MiniMax-M2.7: 0.48 in / 1.79 out / 0.05 cache read
- gpt-oss-120b: 0.17 in / 0.55 out

Source citations live in a leading header block in each file, since the
daily model sync discards comments placed anywhere else.
2026-08-04 13:09:36 -05:00
abonvalle 83cdfa932c feat: add infomaniak provider with 10 models (#2893)
* feat: add infomaniak provider with 10 models

* fix: correct infomaniak reasoning options after live API testing

Verified each reasoning model against the live Infomaniak API:
- reasoning text is returned in `message.reasoning`, so use `interleaved = true`
  instead of the non-existent `field = "reasoning_content"`
- gemma-4-31B-it ignores `reasoning_effort` and never emits reasoning, so drop
  its reasoning_options/interleaved and set `reasoning = false`
- Mistral-Small only accepts `none`/`high`; documented the per-model wire format
  (reasoning_effort on/off) in comments above each reasoning_options

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: use INFOMANIAK_PRODUCT_ID env var to match Infomaniak API

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: promote infomaniak Qwen3.5 122B and Gemma 4 31B out of beta

Infomaniak announced that Qwen3.5 (122B), Gemma 4 (31B) and Mistral
Small 4 (119B) are no longer beta and are production-ready. Mistral
Small 4 already had no beta status, so drop `status = "beta"` from the
Qwen3.5 122B and Gemma 4 31B models and bump last_updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: add required description to standalone infomaniak models

The schema now requires a non-empty `description` on every model. The
six base_model references inherit it from their base model, but the four
standalone models (two embeddings, Ministral 3, Apertus 70B) need their
own. Add descriptions following the repo's existing conventions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: refresh infomaniak pricing, reasoning support, and model identities

Corrects USD pricing to match Infomaniak's CHF-billed rates, fixes reasoning
support flags for gemma-4-31B-it and Mistral-Small (no verified toggle), and
renames models to match their actual upstream identities: MiniLM entry was
mislabeled as the multilingual 117M variant instead of the English-only 33M
one actually served, and Apertus 70B is replaced by the v1.5 release. Also
corrects Kimi-K2.6 modalities (image, no video) and MiniLM's context limit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: align infomaniak data with live catalog and source every claim

Verified all ten model ids case-by-case against Infomaniak's pricing page,
open-source-models catalog and GET /1/ai/models; all match exactly and are
unchanged.

Data corrections:
- gemma-4-31B-it is served text-only ("Text-to-Text" in both the EN and FR
  catalog), so override attachment=false and modalities.input=["text"] instead
  of inheriting image input from the base model
- bge_multilingual_gemma2 input cap is 8'000, not 8'192 (catalog row and the
  API's own max_token_input)
- drop the unsourced limit.output overrides on Qwen3.5-122B and gemma-4-31B-it
  so both inherit from base_model, matching the Qwen3.5-397B sibling
- Ministral-3-14B release_date 2025-12-15 -> 2025-12-02 (repo majority for this
  model); bge release_date 2024-07-30 -> 2024-07-25 (Hugging Face createdAt)
- provider.toml doc pointed at the French marketing landing page; the schema
  wants a page where models are listed

Claim corrections:
- Mistral-Small-4 claimed the live probe confirmed Infomaniak's docs. It does
  not: the docs say thinking is unsupported, the probe found thinking on by
  default and returned in message.reasoning. Only the reasoning_effort
  parameter itself is unsupported. Pin `mistral3` to the model's transformers
  model_type, which is what makes the exclusion apply.
- MiniLM identity rested on the "based on a Microsoft model" blurb, which does
  not discriminate (both candidates descend from a Microsoft MiniLM). Cite
  Infomaniak's "Parameters 33 M" spec row instead.
- label the two forced limit.output estimates (Apertus, Ministral) as estimates
- note that Nemotron's published 1M input cap exceeds its native window

Per AGENTS.md, move every comment into a single top-of-file block (five files
had reasoning notes below the first key) and add the exact reasoning_effort
wire syntax next to each toggle.

bun validate passes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-04 13:08:56 -05:00
Dubal vedant pareshbhai 2e3048b62f Update Groq models: Add Qwen 3.6 27b and ALLaM 2 7b (#3761)
* Update Groq models

* fix(groq): add missing cost block to allam-2-7b

* fix(groq): refine ALLaM 2 7b pricing source comment

* fix(groq): verify ALLaM 2 7b free tier pricing

* fix(groq): align ALLaM comment placement and pricing link
2026-08-04 13:07:10 -05:00
opencode-agent[bot] e81b70f41d chore(sync): update Weights & Biases model catalog (#4054)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 13:06:21 -05:00
opencode-agent[bot] 511fb740a4 chore(sync): update Kilo model catalog (#4058)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 17:54:29 +00:00
opencode-agent[bot] 05acec41ff chore(sync): update OpenRouter model catalog (#4057)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 17:54:24 +00:00
opencode-agent[bot] be86b6c0dc chore(sync): update Kilo model catalog (#4055)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 16:54:51 +00:00
opencode-agent[bot] aabea444f9 chore(sync): update OpenRouter model catalog (#4053)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 16:54:47 +00:00
Stenn Kool 01a878b3a1 Add DeepSeek V4 Flash 0731 to CrofAI (#4052) 2026-08-04 11:19:45 -05:00
opencode-agent[bot] 7d9f3458d5 chore(sync): update CrossModel model catalog (#4037)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 10:27:48 -05:00
opencode-agent[bot] ca1b552628 chore(sync): update Kilo model catalog (#4050)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 10:27:36 -05:00
opencode-agent[bot] b4e1c6609c chore(sync): update Requesty model catalog (#4051)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 10:27:26 -05:00
Aiden Cline 5673d678af fix: correct Qwen3.8 Max China pricing (#4049) 2026-08-04 09:44:19 -05:00
sk0x0y f634823025 Add Kimi K3 to neuralwatt (#3870) 2026-08-04 09:23:38 -05:00
github-actions[bot] 404ddbc4d9 fix: deepseek-v4-flash reasoning_options omit low, which the API accepts and honors (#3963)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 09:23:13 -05:00
github-actions[bot] b9f3acd5bf fix: Is Qwen3.8-MAX available from Alibaba provider without a token/coding plan now? (#4043)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 09:21:35 -05:00
opencode-agent[bot] eba73e62ea chore(sync): update Chutes model catalog (#4046)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 09:06:02 -05:00
Aiden Cline 29db3a439a fix(sync): allow safe reasoning model updates (#4048)
* fix(sync): allow safe reasoning model updates

* fix(sync): keep deleted models uninspected
2026-08-04 09:03:31 -05:00
opencode-agent[bot] 40577ece37 chore(sync): update Merge Gateway model catalog (#4036)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 08:43:13 -05:00
JC f658a67277 fix(sync): map CrossModel structured output (#4038)
Co-authored-by: hujuncheng <hujuncheng@baidu.com>
2026-08-04 08:42:32 -05:00
opencode-agent[bot] ae5bd6c091 chore(sync): update Kilo model catalog (#4047)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 08:41:17 -05:00
Cas Burggraaf eb1ec4c484 Update GreenPT: cached-token rates, compression variants, kimi-k3 (#3927)
* Publish GreenPT cached-token rates and refresh prices

GreenPT now bills prompt-cache hits at a reduced input rate on these models, so
each gains cost.cache_read. Cache writes are not charged, so cost.cache_write is
omitted rather than set to zero.

  glm-5.2         cache_read 0.3135
  kimi-k2.6       cache_read 0.2508
  kimi-k2.7-code  cache_read 0.1881
  minimax-m2.5    cache_read 0.0627

The same pass also picks up list-price corrections: kimi-k2.6 moves to
0.7524 / 4.275, kimi-k2.7-code input to 0.9006, and minimax-m2.5 input to
0.1938. glm-5.2's own prices are unchanged.

Rates: https://docs.greenpt.ai/prompt-caching and https://docs.greenpt.ai/pricing

* Add kimi-k3 to GreenPT

Kimi K3 is generally available on GreenPT at 3.762 input, 18.81 output and
0.9405 for cached prompt tokens. GreenPT serves it with text and image input,
so the inherited video modality is overridden away.

https://docs.greenpt.ai/model-cards

* Add the nine GreenPT glm-5.2 compression variants

GreenPT serves nine ids that are glm-5.2 carrying a built-in output-compression
ruleset: three families (caveman compresses prose, ponytail compresses generated
code, honey compresses both) at three intensities (-lite, unsuffixed, -ultra).

They are the same upstream model at the same price per token, including the same
cached rate, and return fewer output tokens. Each is declared through base_model
so cost and limits cannot drift from glm-5.2.

https://docs.greenpt.ai/compression-models

* Mark GreenPT kimi-k2.6-fast as deprecated

The upstream provider withdrew this model and GreenPT no longer serves the id,
so requests for it now fail. Marked deprecated rather than deleted so existing
configurations still resolve against the catalog.

* Mark GreenPT glm-5.1 as deprecated

The id is still advertised by /v1/models but every request for it returns 404
from production, so it is not servable. Marked deprecated rather than deleted,
matching how kimi-k2.6-fast is handled here.

* Declare the reasoning_effort values each GreenPT model accepts

Replaces the blanket reasoning_options = [] with the values each endpoint
actually accepts, established by sending every documented value to every model
on the production API.

The sets are not uniform, which is why the previous blanket declaration was
wrong in both directions:

  none, minimal, low, medium, high   glm-5.2 and its nine compression variants,
                                     kimi-k3, kimi-k2.6, kimi-k2.7-code,
                                     minimax-m2.5, qwen3.5-397b, qwen3.6-35b,
                                     gemma4
  low, medium, high                  green-r, green-r-raw, gpt-oss-120b,
                                     holo2-30b-a3b (none and minimal return 400)
  none, high                         mistral-medium-3.5-128b (minimal, low and
                                     medium return 400)

This also corrects green-r and green-r-raw, which previously advertised none and
minimal even though both are rejected.

On glm-5.2 and its variants the control is observable, not just accepted:
reasoning_effort "none" takes the reported reasoning tokens to zero.

* Add deepseek-v4-flash-0731 to GreenPT

Generally available on GreenPT at 0.1596 input, 0.399 output and 0.0456 for
cached prompt tokens, with the 1M context inherited from the base model. It
accepts the full reasoning_effort value set.

https://docs.greenpt.ai/model-cards

* Date deepseek-v4-flash-0731 to its own snapshot

The id is the 2026-07-31 snapshot, so inheriting the base model's 2026-04-24
release and update dates would have shown the wrong dates for this endpoint.

The remaining inherited fields were checked against production: structured
output and tool calling both work, and the 1M context matches the published
model card. attachment stays false, since the model card lists no vision
capability.
2026-08-04 08:41:02 -05:00
John Costa 465d15fb33 feat(requesty): syncing script and all models added (#3856)
* feat(requesty): provider sync script to get models from /v1/models/managed

Requesty has "managed" models, which are provider agnostic.

* feat(requesty): syncing all models from requesty
2026-08-04 08:22:23 -05:00
opencode-agent[bot] 183bea88e4 chore(sync): update Kilo model catalog (#4045)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 09:15:12 +00:00
opencode-agent[bot] a2f950c798 chore(sync): update OpenRouter model catalog (#4044)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 09:14:59 +00:00
opencode-agent[bot] 980878f3f3 chore(sync): update CrossModel model catalog (#4029)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-03 23:42:19 -05:00
opencode-agent[bot] f4fcba2d18 chore(sync): update Venice model catalog (#4028)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-03 23:42:07 -05:00
opencode-agent[bot] 88a9f2fa74 chore(sync): update OpenRouter model catalog (#4031)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 03:24:01 +00:00
opencode-agent[bot] 09327a652a chore(sync): update Kilo model catalog (#4030)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
2026-08-04 03:23:51 +00:00
2654 changed files with 30584 additions and 8384 deletions
-2
View File
@@ -18,9 +18,7 @@ jobs:
if: >-
github.repository == 'anomalyco/models.dev'
&& !contains(github.event.issue.labels.*.name, 'provider:openai')
&& !contains(github.event.issue.labels.*.name, 'provider:pioneer')
&& github.event.client_payload.provider != 'openai'
&& github.event.client_payload.provider != 'pioneer'
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
+26 -3
View File
@@ -7,6 +7,7 @@ on:
permissions:
contents: read
issues: write
pull-requests: write
concurrency:
@@ -22,6 +23,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clear ready label
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
READY_LABEL: "reviewer: ready"
run: |
set -euo pipefail
gh label create "$READY_LABEL" --repo "$GITHUB_REPOSITORY" --color "0E8A16" --description "Automated review found no actionable items" --force
labels="$(gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json labels --jq '.labels[].name')"
if grep -Fxq "$READY_LABEL" <<< "$labels"; then
gh pr edit "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --remove-label "$READY_LABEL"
fi
- name: Checkout trusted base revision
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
@@ -53,15 +67,19 @@ jobs:
- name: Run pull request reviewer
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
OPENCODE_PERMISSION: '{"*":"deny","read":"allow","glob":"allow","grep":"allow","external_directory":"deny"}'
OPENCODE_PERMISSION: '{"*":"deny","read":"allow","glob":"allow","grep":"allow","mark-pr-ready":"allow","external_directory":"deny"}'
run: |
set -euo pipefail
EVENTS_FILE="$RUNNER_TEMP/pr-reviewer-events.jsonl"
RESPONSE_FILE="$RUNNER_TEMP/pr-reviewer-response.md"
PR_REVIEW_READY_FILE="$RUNNER_TEMP/pr-reviewer-ready"
echo "RESPONSE_FILE=$RESPONSE_FILE" >> "$GITHUB_ENV"
echo "PR_REVIEW_READY_FILE=$PR_REVIEW_READY_FILE" >> "$GITHUB_ENV"
export PR_REVIEW_READY_FILE
rm -f "$PR_REVIEW_READY_FILE"
opencode run --agent pr-reviewer -m opencode/grok-4.5 --format json <<'EOF' | tee "$EVENTS_FILE"
Review this pull request using the trusted reviewer instructions. Start with `.pr-review/pull-request.json`, `.pr-review/diff.patch`, `AGENTS.md`, and the contributing guidance in `README.md`. Read `sync.md`, the reasoning-options audit guide, schema code, and nearby base-revision files when relevant to the changed files. Use only the read, glob, and grep tools. Return only the final review comment in the agent's required output format. Never include progress narration or passed-check summaries.
Review this pull request using the trusted reviewer instructions. Start with `.pr-review/pull-request.json`, `.pr-review/diff.patch`, `AGENTS.md`, and the contributing guidance in `README.md`. Read `sync.md`, the reasoning-options audit guide, schema code, and nearby base-revision files when relevant to the changed files. Use only the read, glob, grep, and mark-pr-ready tools. Return only the final review comment in the agent's required output format. Never include progress narration or passed-check summaries.
EOF
if ! jq -ers 'map(select(.type == "text") | .part.text) | last | select(length > 0)' "$EVENTS_FILE" > "$RESPONSE_FILE"; then
@@ -73,4 +91,9 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: gh pr comment "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --body-file "$RESPONSE_FILE"
READY_LABEL: "reviewer: ready"
run: |
gh pr comment "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --body-file "$RESPONSE_FILE"
if [[ -f "$PR_REVIEW_READY_FILE" ]]; then
gh pr edit "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --add-label "$READY_LABEL"
fi
+4 -1
View File
@@ -12,6 +12,7 @@ permission:
"*.env.*": deny
glob: allow
grep: allow
mark-pr-ready: allow
external_directory: deny
---
@@ -65,6 +66,8 @@ Focus only on actionable problems introduced by the pull request:
Do not report style preferences, speculative concerns, pre-existing problems, or bare schema errors that validation will identify without useful explanation. Do not invent requirements from neighboring files when provider behavior is intentionally different. Do not claim to have run commands, opened links, or performed validation. Do not edit files or attempt to post comments yourself.
Use `mark-pr-ready` only after completing the review and determining there are no action items. Never use it when returning one or more action items.
Every finding must be an action item: the author must need to change something, verify a specific fact, or provide missing evidence. Do not list checks that passed or general observations. If you find action items, list them in severity order and return exactly this structure:
```markdown
@@ -74,6 +77,6 @@ Every finding must be an action item: the author must need to change something,
Use `violation` only when the change demonstrably breaks a repository requirement or expected behavior. Use `possible mistake` when the diff provides concrete contradictory or suspicious evidence but external facts must be verified. Use `critical`, `high`, `medium`, or `low` for severity. Reference a changed line whenever possible and keep each action item concise.
If there are no action items, respond with exactly the following text and nothing else. Do not explain what you checked or why it passed:
If there are no action items, call `mark-pr-ready`, then respond with exactly the following text and nothing else. Do not explain what you checked or why it passed:
`No actionable findings.`
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mark-pr-ready": "deny"
}
}
+16
View File
@@ -0,0 +1,16 @@
import { writeFile } from "node:fs/promises"
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Mark the current pull request as ready after completing a review with no actionable findings.",
args: {},
async execute(_args, context) {
if (context.agent !== "pr-reviewer") throw new Error("This tool is only available to the pr-reviewer agent")
const readyFile = process.env.PR_REVIEW_READY_FILE
if (!readyFile) throw new Error("PR_REVIEW_READY_FILE is not configured")
await writeFile(readyFile, "")
return "Pull request marked ready."
},
})
+1
View File
@@ -0,0 +1 @@
description = "Arcee AI develops open-weight language models focused on efficient reasoning, tool use, and deployable intelligence."
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd"><path d="M13.236 2.377 2.751 20.493H0L11.863 0l1.373 2.377zm3.554 6.156-9.606 11.96H4.13L15.511 6.32l1.279 2.212zm6.908 11.96H14.05l8.406-2.151 1.242 2.15zm-3.42-5.922-7.843 5.92H8.482l10.597-7.997 1.2 2.077z"/></svg>

After

Width:  |  Height:  |  Size: 318 B

@@ -0,0 +1,22 @@
name = "Gemma-SEA-LION-v4-27B-IT"
description = "Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following"
family = "gemma"
release_date = "2025-09-23"
last_updated = "2025-09-23"
attachment = false
reasoning = false
temperature = true
tool_call = false
open_weights = true
[limit]
context = 128_000
output = 128_000
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/aisingapore/Gemma-SEA-LION-v4-27B-IT"
+23
View File
@@ -0,0 +1,23 @@
name = "Qwen2.5-Coder-0.5B"
description = "Tiny open Qwen code model for lightweight completion and on-device coding"
family = "qwen"
release_date = "2024-11-12"
last_updated = "2024-11-12"
attachment = false
reasoning = false
temperature = true
tool_call = false
open_weights = true
license = "Apache 2.0"
[limit]
context = 32_768
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B"
@@ -0,0 +1,22 @@
name = "Qwen2.5-Coder-32B-Instruct"
description = "Open coding-focused Qwen model for code generation, repair, and repository reasoning"
family = "qwen"
release_date = "2024-11-12"
last_updated = "2024-11-12"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct"
@@ -0,0 +1,23 @@
name = "Qwen3 235B-A22B Instruct 2507"
description = "Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use"
family = "qwen"
release_date = "2025-07-21"
last_updated = "2025-07-21"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "Apache 2.0"
[limit]
context = 262_144
output = 16_384
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507"
+22
View File
@@ -0,0 +1,22 @@
name = "Qwen3 30B A3B"
description = "Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning"
family = "qwen"
release_date = "2025-04-28"
last_updated = "2025-04-28"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = true
[limit]
context = 131_072
output = 16_384
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3-30B-A3B"
+27
View File
@@ -0,0 +1,27 @@
# https://qwen.ai/blog?id=qwen3-coder-next
# https://huggingface.co/Qwen/Qwen3-Coder-Next
# https://www.qwencloud.com/models/qwen3-coder-next
name = "Qwen3 Coder Next"
description = "Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use"
family = "qwen"
release_date = "2026-02-03"
last_updated = "2026-02-03"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-09"
open_weights = true
[limit]
context = 262_144
output = 65_536
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3-Coder-Next"
@@ -0,0 +1,24 @@
name = "Qwen3 VL 235B A22B Instruct"
description = "Qwen vision-language instruct model for visual reasoning, documents, and agent tasks"
family = "qwen"
release_date = "2025-09-23"
last_updated = "2025-09-23"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Instruct"
@@ -0,0 +1,24 @@
name = "Qwen3 VL 235B A22B Thinking"
description = "Qwen vision-language thinking model for visual reasoning, documents, and agent tasks"
family = "qwen"
release_date = "2025-09-23"
last_updated = "2025-09-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-03-31"
open_weights = true
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Thinking"
+22
View File
@@ -0,0 +1,22 @@
# https://help.aliyun.com/en/model-studio/qwen3-5-flash
# https://www.alibabacloud.com/help/en/model-studio/deep-thinking
name = "Qwen3.5 Flash"
description = "Qwen vision-language model for visual reasoning, documents, and agent tasks"
family = "qwen"
release_date = "2026-02-23"
last_updated = "2026-02-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 1_000_000
output = 65_536
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+33
View File
@@ -0,0 +1,33 @@
# Sources (accessed 2026-08-16):
# https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B
# https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B/raw/main/README.md
# https://qwen.ai/blog?id=qwen3.8
# https://openrouter.ai/qwen/qwen3.8-2.4t-a95b
# Open-weight twin of Qwen3.8 Max: text-only, thinking always on,
# reasoning_effort low|medium|xhigh (default xhigh). Native context 262K,
# extensible to ~1.01M. Distinct from closed multimodal qwen3.8-max.
name = "Qwen3.8 2.4T A95B"
description = "Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows"
family = "qwen"
release_date = "2026-08-12"
last_updated = "2026-08-12"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = true
license = "qwen3.8-max"
[limit]
context = 262_144
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"
+36
View File
@@ -0,0 +1,36 @@
# Sources (accessed 2026-08-15):
# https://huggingface.co/Qwen/Qwen3.8-27B
# https://huggingface.co/api/models/Qwen/Qwen3.8-27B
# https://qwen.ai/blog?id=qwen3.8
# Hub lastModified 2026-08-14T15:00:01Z is the open-weight drop.
# Do not use Hub createdAt 2026-08-05 (staged countdown page).
name = "Qwen3.8 27B"
description = "Dense 27B vision-language model for coding, agent tasks, and image and video understanding"
family = "qwen"
release_date = "2026-08-14"
last_updated = "2026-08-14"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = true
[limit]
context = 262_144
output = 32_768
[modalities]
input = ["text", "image", "video"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/Qwen3.8-27B"
[[benchmarks]]
name = "SWE-bench Pro"
score = 61.7
metric = "resolved"
source = "https://huggingface.co/Qwen/Qwen3.8-27B"
+10 -2
View File
@@ -1,6 +1,10 @@
# Sources (accessed 2026-08-03):
# Sources (accessed 2026-08-06):
# https://www.qwencloud.com/models/qwen3.8-max
# https://www.qianwenai.com/models/qwen3.8-max
# https://help.aliyun.com/zh/model-studio/qwen3-8-max
# https://www.alibabacloud.com/help/en/model-studio/qwen3-8-max
# https://help.aliyun.com/zh/model-studio/pdf-understanding
# https://platform.qianwenai.com/docs/developer-guides/tool-calling/pdf-understanding
# https://docs.qwencloud.com/token-plan/personal/token-plan-personal-overview
# https://help.aliyun.com/zh/model-studio/token-plan-personal-overview
# https://help.aliyun.com/en/model-studio/token-plan-personal-overview
@@ -9,6 +13,10 @@
# https://docs.qwencloud.com/developer-guides/clients-and-developer-tools/opencode
# https://platform.qianwenai.com/docs/developer-guides/clients-and-developer-tools/opencode
# https://qwen.ai/blog?id=qwen3.8
# PDF input: Model Studio / 千问AI docs list only qwen3.8-max under PDF理解
# (type:file / file_url|file_data). Model pages list Image/Text/Video badges
# and separately list PDF理解 as a Completions built-in tool. Beijing-region
# availability note on help.aliyun.com; lab capability still includes pdf.
name = "Qwen3.8 Max"
description = "2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows"
@@ -26,5 +34,5 @@ context = 1_000_000
output = 131_072
[modalities]
input = ["text", "image", "video"]
input = ["text", "image", "video", "pdf"]
output = ["text"]
+23
View File
@@ -0,0 +1,23 @@
name = "QwQ 32B"
description = "Open reasoning model from the Qwen team for math, coding, and step-by-step problem solving"
family = "qwen"
release_date = "2025-03-05"
last_updated = "2025-03-05"
attachment = false
reasoning = true
temperature = true
tool_call = true
knowledge = "2024-04"
open_weights = true
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Qwen/QwQ-32B"
+23
View File
@@ -0,0 +1,23 @@
# Sources:
# https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5
# https://www.anthropic.com/claude/mythos
name = "Claude Mythos 5"
description = "Restricted Claude model for advanced cybersecurity and biology research workflows"
family = "claude-mythos"
release_date = "2026-06-09"
last_updated = "2026-06-09"
attachment = true
reasoning = true
temperature = false
tool_call = true
structured_output = true
knowledge = "2026-01-31"
open_weights = false
[limit]
context = 1_000_000
output = 128_000
[modalities]
input = ["text", "image", "pdf"]
output = ["text"]
@@ -0,0 +1,40 @@
# Source: https://huggingface.co/arcee-ai/Trinity-Large-Preview
name = "Trinity Large Preview"
description = "Lightly post-trained 398B MoE chat model for creative work, long-context prompts, and tool-using agents"
family = "trinity"
release_date = "2026-01-27"
last_updated = "2026-05-28"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "OpenMDW-1.1"
[limit]
context = 524_288
output = 262_144
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Preview"
format = "safetensors"
[[links]]
label = "Model card"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Preview"
type = "model_card"
[[links]]
label = "Announcement"
url = "https://www.arcee.ai/blog/trinity-large"
type = "announcement"
[[links]]
label = "License"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Preview/blob/main/LICENSE"
type = "license"
@@ -0,0 +1,40 @@
# Source: https://huggingface.co/arcee-ai/Trinity-Large-Thinking
name = "Trinity Large Thinking"
description = "Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use"
family = "trinity"
release_date = "2026-04-01"
last_updated = "2026-05-28"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = true
license = "OpenMDW-1.1"
[limit]
context = 524_288
output = 262_144
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Thinking"
format = "safetensors"
[[links]]
label = "Model card"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Thinking"
type = "model_card"
[[links]]
label = "Announcement"
url = "https://www.arcee.ai/blog/trinity-large-thinking"
type = "announcement"
[[links]]
label = "License"
url = "https://huggingface.co/arcee-ai/Trinity-Large-Thinking/blob/main/LICENSE"
type = "license"
+40
View File
@@ -0,0 +1,40 @@
# Source: https://huggingface.co/arcee-ai/Trinity-Mini
name = "Trinity Mini"
description = "Reasoning-tuned 26B MoE model with 3B active parameters for agents, tools, and multi-step workloads"
family = "trinity"
release_date = "2025-12-01"
last_updated = "2026-05-28"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = true
license = "OpenMDW-1.1"
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/arcee-ai/Trinity-Mini"
format = "safetensors"
[[links]]
label = "Model card"
url = "https://huggingface.co/arcee-ai/Trinity-Mini"
type = "model_card"
[[links]]
label = "Announcement"
url = "https://www.arcee.ai/blog/the-trinity-manifesto"
type = "announcement"
[[links]]
label = "License"
url = "https://huggingface.co/arcee-ai/Trinity-Mini/blob/main/LICENSE"
type = "license"
+40
View File
@@ -0,0 +1,40 @@
# Source: https://huggingface.co/arcee-ai/Trinity-Nano-Preview
name = "Trinity Nano Preview"
description = "Experimental chat-tuned 6B MoE model with 1B active parameters for low-resource chat and instruction following"
family = "trinity"
release_date = "2025-12-01"
last_updated = "2026-05-28"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "OpenMDW-1.1"
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/arcee-ai/Trinity-Nano-Preview"
format = "safetensors"
[[links]]
label = "Model card"
url = "https://huggingface.co/arcee-ai/Trinity-Nano-Preview"
type = "model_card"
[[links]]
label = "Announcement"
url = "https://www.arcee.ai/blog/the-trinity-manifesto"
type = "announcement"
[[links]]
label = "License"
url = "https://huggingface.co/arcee-ai/Trinity-Nano-Preview/blob/main/LICENSE"
type = "license"
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 1.6 Flash"
description = "Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use"
family = "seed"
release_date = "2025-08-28"
last_updated = "2025-08-28"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 32_000
[modalities]
input = ["text"]
output = ["text"]
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 1.6 Vision"
description = "ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks"
family = "seed"
release_date = "2025-08-15"
last_updated = "2025-08-15"
attachment = true
reasoning = false
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 32_000
[modalities]
input = ["text", "image"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 1.6"
description = "ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks"
family = "seed"
release_date = "2025-10-15"
last_updated = "2025-10-15"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 64_000
[modalities]
input = ["text"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 1.8"
description = "ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows"
family = "seed"
release_date = "2025-12-28"
last_updated = "2025-12-28"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 64_000
[modalities]
input = ["text"]
output = ["text"]
+23
View File
@@ -0,0 +1,23 @@
# Sources (accessed 2026-08-11):
# - https://seed.bytedance.com/en/blog/seed-2-0-official-launch
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.0 Code"
description = "ByteDance Seed coding model for multimodal software engineering and long-running agents"
family = "seed"
release_date = "2026-02-14"
last_updated = "2026-02-14"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 262_144
output = 131_072
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.0 Lite"
description = "Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation"
family = "seed"
release_date = "2026-02-14"
last_updated = "2026-02-14"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 32_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.0 Mini"
description = "Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks"
family = "seed"
release_date = "2026-02-14"
last_updated = "2026-02-14"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 32_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.0 Pro"
description = "Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows"
family = "seed"
release_date = "2026-02-14"
last_updated = "2026-02-14"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 128_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.1 Pro"
description = "Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents"
family = "seed"
release_date = "2026-06-23"
last_updated = "2026-06-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 256_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed 2.1 Turbo"
description = "Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows"
family = "seed"
release_date = "2026-06-23"
last_updated = "2026-06-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 256_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed Character"
description = "ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior"
family = "seed"
release_date = "2026-06-23"
last_updated = "2026-06-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 256_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+21
View File
@@ -0,0 +1,21 @@
# Sources (accessed 2026-08-14):
# - https://seed.bytedance.com/en/seed2
# - https://www.volcengine.com/docs/82379/1330310
name = "Seed Evolving"
description = "Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities"
family = "seed"
release_date = "2026-06-23"
last_updated = "2026-06-23"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 256_000
output = 256_000
[modalities]
input = ["text", "image", "video"]
output = ["text"]
+16
View File
@@ -0,0 +1,16 @@
name = "DeepSeek OCR 2"
description = "High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes"
release_date = "2026-01-27"
last_updated = "2026-01-27"
attachment = true
reasoning = false
tool_call = false
open_weights = true
[limit]
context = 8_192
output = 8_192
[modalities]
input = ["text", "image"]
output = ["text"]
@@ -0,0 +1,22 @@
name = "DeepSeek-R1-Distill-Qwen-32B"
description = "R1 reasoning distilled into Qwen 2.5 32B for efficient open-weight step-by-step problem solving"
family = "deepseek-thinking"
release_date = "2025-01-20"
last_updated = "2025-01-20"
attachment = false
reasoning = true
temperature = true
tool_call = false
open_weights = true
[limit]
context = 131_072
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
+23
View File
@@ -0,0 +1,23 @@
name = "DeepSeek V3 0324"
description = "March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding"
family = "deepseek"
release_date = "2025-03-24"
last_updated = "2025-03-24"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
[limit]
context = 163_840
output = 163_840
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Model weights"
url = "https://huggingface.co/deepseek-ai/DeepSeek-V3-0324"
format = "safetensors"
+23
View File
@@ -0,0 +1,23 @@
name = "DeepSeek-V3.1"
description = "Hybrid-reasoning DeepSeek model with thinking and non-thinking modes"
family = "deepseek"
release_date = "2025-08-21"
last_updated = "2025-08-21"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = true
license = "MIT License"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/deepseek-ai/DeepSeek-V3.1"
+27
View File
@@ -0,0 +1,27 @@
# https://api-docs.deepseek.com/news/news251201
# https://huggingface.co/deepseek-ai/DeepSeek-V3.2
name = "DeepSeek V3.2"
description = "Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use"
family = "deepseek"
release_date = "2025-12-01"
last_updated = "2025-12-01"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-07"
open_weights = true
license = "MIT License"
[limit]
context = 128_000
output = 64_000
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/deepseek-ai/DeepSeek-V3.2"
+23
View File
@@ -0,0 +1,23 @@
name = "DeepSeek-V3"
description = "Open DeepSeek MoE chat model for coding, math, and general reasoning"
family = "deepseek"
release_date = "2024-12-26"
last_updated = "2024-12-26"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "DeepSeek Model License"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/deepseek-ai/DeepSeek-V3"
@@ -0,0 +1,19 @@
name = "DeepSeek V4 Flash Vision Exp"
description = "Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work"
family = "deepseek-flash"
release_date = "2026-08-21"
last_updated = "2026-08-21"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 1_000_000
output = 384_000
[modalities]
input = ["text", "image"]
output = ["text"]
+22
View File
@@ -0,0 +1,22 @@
# https://ofox.ai/models/deepseek/deepseek-v4-pro-0423
# https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro
name = "DeepSeek V4 Pro 0423"
description = "DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes"
family = "deepseek-thinking"
release_date = "2026-04-23"
last_updated = "2026-04-23"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-05"
open_weights = true
[limit]
context = 1_000_000
output = 384_000
[modalities]
input = ["text"]
output = ["text"]
+19
View File
@@ -0,0 +1,19 @@
name = "DeepSeek V4 Pro 0813"
description = "DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes"
family = "deepseek-thinking"
release_date = "2026-08-12"
last_updated = "2026-08-12"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 1_000_000
output = 384_000
[modalities]
input = ["text"]
output = ["text"]
+68
View File
@@ -0,0 +1,68 @@
name = "Gemini 3.7 Flash"
description = "High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning"
family = "gemini-flash"
release_date = "2026-08-13"
last_updated = "2026-08-13"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2026-03"
open_weights = false
[limit]
context = 1_048_576
output = 65_536
[modalities]
input = ["text", "image", "video", "audio", "pdf"]
output = ["text"]
[[benchmarks]]
name = "FrontierCode"
score = 43.6
metric = "score"
version = "1.1 Main"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
[[benchmarks]]
name = "DeepSWE"
score = 65.3
metric = "resolve rate"
version = "1.1"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
[[benchmarks]]
name = "Terminal-Bench"
score = 85.8
metric = "accuracy"
version = "2.1"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
[[benchmarks]]
name = "AutomationBench"
score = 30.4
metric = "accuracy"
dataset = "private set"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
[[benchmarks]]
name = "GDP.pdf"
score = 34.0
metric = "accuracy"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
[[benchmarks]]
name = "GDM-MRCR"
score = 97.0
metric = "accuracy"
variant = "128k average, 8-needle"
version = "v2"
source = "https://deepmind.google/models/model-cards/gemini-3-7-flash/"
date = "2026-08-13"
+5 -5
View File
@@ -1,15 +1,15 @@
# Tracks the current Gemini Flash release (gemini-3.5-flash).
# Tracks the current Gemini Flash release (gemini-3.7-flash).
name = "Gemini Flash Latest"
description = "Fast Gemini model balancing multimodal reasoning, tool use, and cost"
description = "High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning"
family = "gemini-flash"
release_date = "2026-05-19"
last_updated = "2026-05-19"
release_date = "2026-08-13"
last_updated = "2026-08-13"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-01"
knowledge = "2026-03"
open_weights = false
[limit]
+5 -5
View File
@@ -1,15 +1,15 @@
# Tracks the current Gemini Flash-Lite release (gemini-3.1-flash-lite).
# Tracks the current Gemini Flash-Lite release (gemini-3.5-flash-lite).
name = "Gemini Flash-Lite Latest"
description = "Low-latency Gemini model for high-volume multimodal and agent workloads"
description = "Fast Gemini model balancing multimodal reasoning, tool use, and cost"
family = "gemini-flash-lite"
release_date = "2026-05-07"
last_updated = "2026-05-07"
release_date = "2026-07-21"
last_updated = "2026-07-21"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2025-01"
knowledge = "2026-03"
open_weights = false
[limit]
+23
View File
@@ -0,0 +1,23 @@
name = "Granite-4.0-H-Micro"
description = "Compact open-weight hybrid Granite model for lightweight enterprise chat and tool calling"
family = "granite"
release_date = "2025-10-02"
last_updated = "2025-10-02"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
open_weights = true
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/ibm-granite/granite-4.0-h-micro"
+23
View File
@@ -0,0 +1,23 @@
name = "Granite-4.0-H-Small"
description = "Open-weight hybrid model for enterprise chat, coding, retrieval-augmented generation, and tool-calling workloads"
family = "granite"
release_date = "2025-10-02"
last_updated = "2025-10-02"
attachment = false
reasoning = false
temperature = true
tool_call = true
structured_output = true
open_weights = true
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/ibm-granite/granite-4.0-h-small"
+23
View File
@@ -0,0 +1,23 @@
name = "Llama-3.1-8B-Instruct"
description = "Compact open Llama model for lightweight chat, drafting, and self-hosting"
family = "llama"
release_date = "2024-07-23"
last_updated = "2024-07-23"
attachment = false
reasoning = false
temperature = true
tool_call = true
knowledge = "2023-12"
open_weights = true
[limit]
context = 128_000
output = 4_096
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct"
@@ -0,0 +1,23 @@
name = "Llama-3.2-11B-Vision-Instruct"
description = "Open multimodal Llama model for image understanding, captioning, and visual QA"
family = "llama"
release_date = "2024-09-25"
last_updated = "2024-09-25"
attachment = true
reasoning = false
temperature = true
tool_call = true
knowledge = "2023-12"
open_weights = true
[limit]
context = 128_000
output = 4_096
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct"
+24
View File
@@ -0,0 +1,24 @@
name = "Llama-3.2-1B"
description = "Compact open Llama base model for lightweight and on-device use"
family = "llama"
release_date = "2024-09-25"
last_updated = "2024-09-25"
attachment = false
reasoning = false
temperature = true
tool_call = false
knowledge = "2023-12"
open_weights = true
license = "Llama 3.2 Community License"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-llama/Llama-3.2-1B"
+24
View File
@@ -0,0 +1,24 @@
name = "Llama-3.2-3B"
description = "Small open Llama base model for lightweight text generation and self-hosting"
family = "llama"
release_date = "2024-09-25"
last_updated = "2024-09-25"
attachment = false
reasoning = false
temperature = true
tool_call = false
knowledge = "2023-12"
open_weights = true
license = "Llama 3.2 Community License"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-llama/Llama-3.2-3B"
+23
View File
@@ -0,0 +1,23 @@
name = "Llama-Guard-3-8B"
description = "Llama 3.1-based safety classifier for moderating prompts and model responses"
family = "llama"
release_date = "2024-07-23"
last_updated = "2024-07-23"
attachment = false
reasoning = false
temperature = true
tool_call = false
knowledge = "2023-12"
open_weights = true
[limit]
context = 128_000
output = 4_096
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-llama/Llama-Guard-3-8B"
+111
View File
@@ -0,0 +1,111 @@
# Sources:
# https://research.meta.ai/blog/introducing-muse-glimmer-open-agentic-model
# https://huggingface.co/meta-models/Muse-Glimmer-30B
# https://developer.meta.com/ai/models/muse-glimmer/
name = "Muse Glimmer 30B"
description = "Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding."
family = "muse"
release_date = "2026-08-10"
last_updated = "2026-08-10"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
knowledge = "2026-01-04"
open_weights = true
license = "Apache 2.0"
[limit]
context = 131_072
output = 131_072
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
[[links]]
label = "Announcement"
url = "https://research.meta.ai/blog/introducing-muse-glimmer-open-agentic-model"
type = "announcement"
[[links]]
label = "Model card"
url = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
type = "model_card"
[[links]]
label = "Developer docs"
url = "https://developer.meta.com/ai/models/muse-glimmer/"
type = "docs"
[[benchmarks]]
name = "MCP Atlas"
score = 75.5
metric = "success rate"
variant = "public"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "DeepSearch QA"
score = 74.6
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "SWE-Bench Pro"
score = 51.2
metric = "resolve rate"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "SWE-Bench Verified"
score = 76.0
metric = "resolve rate"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "Terminal-Bench"
score = 51.7
metric = "success rate"
version = "2.1"
variant = "with terminus2"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "OSWorld-Verified"
score = 65.9
metric = "success rate"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "AIME 2026"
score = 94.7
metric = "accuracy"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "GPQA Diamond"
score = 83.5
metric = "accuracy"
variant = "AA"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
[[benchmarks]]
name = "CharXiv Reasoning"
score = 78.8
metric = "accuracy"
source = "https://huggingface.co/meta-models/Muse-Glimmer-30B"
date = "2026-08-10"
+23
View File
@@ -0,0 +1,23 @@
# Sources:
# https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2
# https://dev.meta.ai/docs/getting-started/models
name = "Muse Spark 1.2"
description = "Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows."
family = "muse"
release_date = "2026-08-05"
last_updated = "2026-08-05"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 1_048_576
output = 131_072
[modalities]
input = ["text", "image", "video", "pdf", "audio"]
output = ["text"]
+23
View File
@@ -0,0 +1,23 @@
name = "MAI-Code-1.1-Flash"
description = "Microsoft coding model with native vision support, optimized for fast and efficient software development"
family = "mai"
release_date = "2026-08-11"
last_updated = "2026-08-11"
attachment = true
reasoning = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 256_000
output = 128_000
[modalities]
input = ["text", "image"]
output = ["text"]
[[links]]
label = "Announcement"
url = "https://microsoft.ai/news/mai-code-1-1-flash-br-better-faster-at-a-quarter-of-the-cost/"
type = "announcement"
+30
View File
@@ -0,0 +1,30 @@
name = "Phi-4-mini"
description = "Compact Microsoft instruction model tuned for efficient coding assistance, reasoning, and low-latency agent tasks"
family = "phi"
release_date = "2024-12-11"
last_updated = "2024-12-11"
attachment = false
reasoning = false
temperature = true
tool_call = true
knowledge = "2023-10"
open_weights = true
[limit]
context = 128_000
output = 4_096
[modalities]
input = ["text"]
output = ["text"]
[[links]]
label = "Weights"
url = "https://huggingface.co/microsoft/Phi-4-mini-instruct"
type = "weights"
[[benchmarks]]
name = "MMLU"
score = 67.3
metric = "accuracy"
source = "https://huggingface.co/microsoft/Phi-4-mini-instruct/resolve/main/README.md"
+19
View File
@@ -0,0 +1,19 @@
# Source: https://api.ofox.ai/v2/models/catalog?include=provider_price&limit=500
name = "MiniMax-M2 Her"
description = "MiniMax M2 variant tuned for conversational and character-driven agent interactions"
family = "minimax"
release_date = "2026-01-23"
last_updated = "2026-01-23"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = false
[limit]
context = 200_000
output = 131_000
[modalities]
input = ["text"]
output = ["text"]
+23
View File
@@ -0,0 +1,23 @@
name = "Codestral-22B-v0.1"
description = "Open Mistral code model for fill-in-the-middle and 80+ programming languages"
family = "codestral"
release_date = "2024-05-29"
last_updated = "2024-05-29"
attachment = false
reasoning = false
temperature = true
tool_call = false
open_weights = true
license = "Mistral AI Non-Production License"
[limit]
context = 32_768
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/mistralai/Codestral-22B-v0.1"
+23
View File
@@ -0,0 +1,23 @@
name = "Magistral Small"
description = "Open Mistral reasoning model for transparent step-by-step problem solving"
family = "magistral"
release_date = "2025-06-10"
last_updated = "2025-06-10"
attachment = false
reasoning = true
temperature = true
tool_call = true
open_weights = true
license = "Apache 2.0"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/mistralai/Magistral-Small-2506"
@@ -0,0 +1,23 @@
name = "Ministral 8B Instruct"
description = "Efficient open Mistral edge model for on-device chat and function calling"
family = "ministral"
release_date = "2024-10-16"
last_updated = "2024-10-16"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "Mistral Research License"
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/mistralai/Ministral-8B-Instruct-2410"
@@ -0,0 +1,24 @@
name = "Mistral Small 3.1 24B"
description = "Efficient multimodal model for instruction following, coding, reasoning, and function calling"
family = "mistral-small"
release_date = "2025-03-17"
last_updated = "2025-03-17"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = true
knowledge = "2024-06"
open_weights = true
[limit]
context = 128_000
output = 16_384
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503"
+24
View File
@@ -0,0 +1,24 @@
# Sources (accessed 2026-08-16):
# https://docs.mistral.ai/models/model-cards/voxtral-small-25-07
# https://mistral.ai/news/voxtral/
# Field values mirror Mistral's own first-party host entry in this repo
# (providers/mistral/models/voxtral-small-latest.toml); host-scoped keys
# (cost, status) are intentionally left to the provider files.
name = "Voxtral Small (latest)"
description = "Instruct model with native audio input for speech understanding and tool use"
family = "voxtral"
release_date = "2025-07-15"
last_updated = "2025-07-15"
attachment = true
reasoning = false
temperature = true
tool_call = true
open_weights = true
[limit]
context = 32_000
output = 32_000
[modalities]
input = ["text", "audio"]
output = ["text"]
+19
View File
@@ -0,0 +1,19 @@
name = "Nemotron 3.5 Lightning 30B A3B"
description = "Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads"
family = "nemotron"
release_date = "2026-08-11"
last_updated = "2026-08-11"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = true
[limit]
context = 262_144
output = 262_144
[modalities]
input = ["text"]
output = ["text"]
@@ -1,25 +1,20 @@
name = "GPT-5.3-Codex"
name = "GPT-5.3 Codex Spark"
description = "Coding-optimized GPT model for repository edits, reviews, and agentic software work"
family = "gpt-codex"
release_date = "2026-02-24"
last_updated = "2026-02-24"
family = "gpt-codex-spark"
release_date = "2026-02-05"
last_updated = "2026-02-05"
attachment = true
reasoning = true
reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "max"] }, { type = "budget_tokens" }]
temperature = false
knowledge = "2025-08-31"
tool_call = true
structured_output = true
open_weights = false
[cost]
input = 1.75
output = 14.00
cache_read = 0.175
[limit]
context = 400_000
output = 128_000
context = 128_000
input = 100_000
output = 32_000
[modalities]
input = ["text", "image", "pdf"]
@@ -0,0 +1,25 @@
# Sources (accessed 2026-08-16):
# https://docs.perplexity.ai/docs/sonar/models/sonar-deep-research
# https://docs.perplexity.ai/api-reference/sonar-post
# Field values mirror Perplexity's own first-party host entry in this repo
# (providers/perplexity/models/sonar-deep-research.toml); host-scoped keys
# (cost, reasoning_options) are intentionally left to the provider files.
name = "Sonar Deep Research"
description = "Sonar search model for autonomous research and citation-backed long-form reports"
family = "sonar"
release_date = "2025-02-01"
last_updated = "2025-09-01"
attachment = false
reasoning = true
temperature = false
tool_call = false
knowledge = "2025-01"
open_weights = false
[limit]
context = 128_000
output = 32_768
[modalities]
input = ["text"]
output = ["text"]
+59
View File
@@ -0,0 +1,59 @@
name = "Sakana Namazu"
description = "Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows"
family = "sakana-namazu"
release_date = "2026-08-03"
last_updated = "2026-08-03"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 262_144
output = 65_536
[modalities]
input = ["text", "image", "pdf"]
output = ["text"]
[[links]]
label = "Official product page"
url = "https://sakana.ai/namazu/"
type = "announcement"
[[links]]
label = "Official model documentation"
url = "https://console.sakana.ai/models?model=sakana-namazu"
type = "docs"
[[benchmarks]]
name = "AIME26"
score = 96.67
source = "https://console.sakana.ai/models?model=sakana-namazu"
[[benchmarks]]
name = "MMLU-Pro"
score = 90.33
source = "https://console.sakana.ai/models?model=sakana-namazu"
[[benchmarks]]
name = "LiveCodeBench v6"
score = 90.33
source = "https://console.sakana.ai/models?model=sakana-namazu"
[[benchmarks]]
name = "JFBench"
score = 37.40
source = "https://console.sakana.ai/models?model=sakana-namazu"
[[benchmarks]]
name = "Translation"
score = 52.20
source = "https://console.sakana.ai/models?model=sakana-namazu"
[[benchmarks]]
name = "FairPoliticsQA"
score = 56.30
source = "https://console.sakana.ai/models?model=sakana-namazu"
+21
View File
@@ -0,0 +1,21 @@
name = "ALLaM-2-7b"
description = "ALLaM-2-7b instruction tuned model by SDAIA"
release_date = "2025-01-23"
last_updated = "2025-01-23"
attachment = false
reasoning = false
temperature = true
tool_call = false
open_weights = true
[limit]
context = 4096
output = 4096
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/ALLaM-AI/ALLaM-2.0-7B-Instruct"
+28
View File
@@ -0,0 +1,28 @@
name = "Apertus 70B"
description = "Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant."
release_date = "2025-09-02"
last_updated = "2025-09-02"
knowledge = "2025-09"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "Apache-2.0"
[limit]
context = 65_536
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/swiss-ai/Apertus-70B-Instruct-2509"
[[links]]
label = "Paper"
url = "https://arxiv.org/abs/2509.14233"
type = "paper"
+33
View File
@@ -0,0 +1,33 @@
# Sources (accessed 2026-08-16):
# https://huggingface.co/swiss-ai/Apertus-8B-Instruct-2509
# https://arxiv.org/abs/2509.14233
# The model card states "Apertus by default supports a context length up to 65,536 tokens",
# Apache-2.0 licensing, and tool use support. Sibling entry: models/swiss-ai/apertus-70b.toml.
name = "Apertus 8B"
description = "Fully open 8B multilingual LLM supporting 1800+ languages with 65K context. Trained on compliant open data. Apache 2.0, EU AI Act compliant."
release_date = "2025-09-02"
last_updated = "2025-09-02"
knowledge = "2025-09"
attachment = false
reasoning = false
temperature = true
tool_call = true
open_weights = true
license = "Apache-2.0"
[limit]
context = 65_536
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/swiss-ai/Apertus-8B-Instruct-2509"
[[links]]
label = "Paper"
url = "https://arxiv.org/abs/2509.14233"
type = "paper"
+30
View File
@@ -0,0 +1,30 @@
# Sources:
# https://huggingface.co/Trendyol/Trendyol-LLM-Asure-12B
# https://huggingface.co/api/models/Trendyol/Trendyol-LLM-Asure-12B (createdAt, license, base_model)
# https://huggingface.co/Trendyol/Trendyol-LLM-Asure-12B/raw/main/config.json (max_position_embeddings)
# `reasoning` and `tool_call` are not stated on the model card; both were
# measured against a host serving these weights (llmtr.com, 2026-08-16):
# a request carrying `tools` returns no tool_calls, and no reasoning output
# is produced.
name = "Trendyol Asure 12B"
description = "Turkish-language multimodal instruct model built on Gemma 3 12B for e-commerce text, chat, and image-text tasks"
family = "gemma"
release_date = "2026-02-19"
last_updated = "2026-02-20"
attachment = true
reasoning = false
temperature = true
tool_call = false
open_weights = true
license = "Gemma"
[limit]
context = 131_072
[modalities]
input = ["text", "image"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/Trendyol/Trendyol-LLM-Asure-12B"
+25
View File
@@ -0,0 +1,25 @@
# Sources (accessed 2026-08-16):
# https://developers.upstage.ai/docs/apis/chat
# https://developers.upstage.ai/docs/capabilities/generate/reasoning
# Field values mirror Upstage's own first-party host entry in this repo
# (providers/upstage/models/solar-pro2.toml); host-scoped keys (cost,
# reasoning_options) are intentionally left to the provider files.
name = "Solar Pro 2"
description = "Flagship model for demanding analysis, coding, and production agent workflows"
family = "solar-pro"
release_date = "2025-05-20"
last_updated = "2025-05-20"
attachment = false
reasoning = true
temperature = true
knowledge = "2025-03"
tool_call = true
open_weights = false
[limit]
context = 65_536
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
+25
View File
@@ -0,0 +1,25 @@
# Sources (accessed 2026-08-16):
# https://developers.upstage.ai/docs/apis/chat
# https://developers.upstage.ai/docs/capabilities/generate/reasoning
# Field values mirror Upstage's own first-party host entry in this repo
# (providers/upstage/models/solar-pro3.toml); host-scoped keys (cost,
# reasoning_options) are intentionally left to the provider files.
name = "Solar Pro 3"
description = "Flagship model for demanding analysis, coding, and production agent workflows"
family = "solar-pro"
release_date = "2026-01"
last_updated = "2026-01"
attachment = false
reasoning = true
temperature = true
knowledge = "2025-03"
tool_call = true
open_weights = false
[limit]
context = 131_072
output = 8_192
[modalities]
input = ["text"]
output = ["text"]
+26
View File
@@ -0,0 +1,26 @@
# Sources (accessed 2026-08-16):
# https://developers.upstage.ai/docs/apis/chat
# https://developers.upstage.ai/docs/capabilities/generate/reasoning
# Field values mirror Upstage's own first-party host entry in this repo
# (providers/upstage/models/solar-pro4.toml); host-scoped keys (cost,
# reasoning_options) are intentionally left to the provider files.
name = "Solar Pro 4"
description = "Upstage's flagship model, specialized for agentic use"
family = "solar-pro"
release_date = "2026-08-06"
last_updated = "2026-08-06"
attachment = false
reasoning = true
temperature = true
knowledge = "2026-02"
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 524_288
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
+24
View File
@@ -0,0 +1,24 @@
# xAI Grok 4.1 Fast (non-reasoning).
# Sources:
# - https://x.ai/news/grok-4-1-fast (release 2025-11-19; variants + $0.20/$0.50/$0.05 pricing)
# - https://docs.oracle.com/en-us/iaas/Content/generative-ai/xai-grok-4-1-fast.htm (2M context, text+image, tools, structured outputs, non-reasoning mode)
# - https://api.ofox.ai/v1/models/x-ai/grok-4.1-fast (canonical_slug grok-4-1-fast-non-reasoning; context 2M; max_completion 30k)
name = "Grok 4.1 Fast"
description = "xAI's fast agentic tool-calling model with a 2M context window; non-reasoning variant for low-latency responses"
family = "grok"
release_date = "2025-11-19"
last_updated = "2025-11-19"
attachment = true
reasoning = false
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 2_000_000
output = 30_000
[modalities]
input = ["text", "image"]
output = ["text"]
+1 -1
View File
@@ -1,5 +1,5 @@
name = "Grok 4.5"
description = "xAI's latest Grok for chat, coding, agentic tools, and lower hallucination risk"
description = "xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk"
family = "grok"
release_date = "2026-07-08"
last_updated = "2026-07-08"
+20
View File
@@ -0,0 +1,20 @@
name = "Grok 4.6"
description = "xAI's frontier model for long-running agents, coding, knowledge work, and visual projects"
family = "grok"
knowledge = "2026-02-01"
release_date = "2026-08-12"
last_updated = "2026-08-12"
attachment = true
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 500_000
output = 500_000
[modalities]
input = ["text", "image"]
output = ["text"]
+26
View File
@@ -0,0 +1,26 @@
# Sources:
# - https://docs.x.ai/docs/models
# - https://docs.x.ai/developers/models/grok-imagine-image-2.0
# - https://docs.x.ai/docs/guides/image-generation
# - https://x.ai/news/grok-imagine-image-2
# Pricing: $0.04 per image (not token-based; no [cost] authored)
# Release: 2026-08-07 (GA as Quality Mode; API model id grok-imagine-image-2.0)
name = "Grok Imagine Image 2.0"
description = "Image model for prompt-driven generation, editing, and visual design workflows"
family = "grok"
release_date = "2026-08-07"
last_updated = "2026-08-07"
attachment = true
reasoning = false
temperature = false
tool_call = false
open_weights = false
[limit]
context = 8_000
output = 0
[modalities]
input = ["text", "image"]
output = ["image"]
+25
View File
@@ -0,0 +1,25 @@
# Sources (accessed 2026-08-19):
# - https://z.ai/blog/glm-4.6v
# - https://huggingface.co/zai-org/GLM-4.6V-Flash
name = "GLM-4.6V-Flash"
description = "Lightweight GLM vision model for visual reasoning, documents, and multimodal agents"
family = "glm"
release_date = "2025-12-08"
last_updated = "2025-12-08"
attachment = true
reasoning = true
temperature = true
tool_call = true
open_weights = true
[limit]
context = 128_000
output = 32_768
[modalities]
input = ["text", "image", "video"]
output = ["text"]
[[weights]]
label = "Hugging Face"
url = "https://huggingface.co/zai-org/GLM-4.6V-Flash"
+19
View File
@@ -0,0 +1,19 @@
name = "GLM-5.3"
description = "Flagship GLM model for long-horizon coding, agents, and complex project delivery"
family = "glm"
release_date = "2026-08-14"
last_updated = "2026-08-14"
attachment = false
reasoning = true
temperature = true
tool_call = true
structured_output = true
open_weights = false
[limit]
context = 1_000_000
output = 131_072
[modalities]
input = ["text"]
output = ["text"]
+2
View File
@@ -28,6 +28,8 @@
"huggingface:sync": "bun ./packages/core/script/sync-models.ts huggingface",
"kilo:sync": "bun ./packages/core/script/sync-models.ts kilo",
"llmgateway:sync": "bun ./packages/core/script/sync-models.ts llmgateway",
"llmgateway-providers:sync": "bun ./packages/core/script/sync-models.ts llmgateway-providers",
"requesty:sync": "bun ./packages/core/script/sync-models.ts requesty",
"merge-gateway:sync": "bun ./packages/core/script/sync-models.ts merge-gateway",
"nano-gpt:sync": "bun ./packages/core/script/sync-models.ts nano-gpt",
"venice:sync": "bun ./packages/core/script/sync-models.ts venice",
+10 -1
View File
@@ -11,7 +11,16 @@ const diff = Bun.spawnSync(["git", "diff", "--name-status", "--no-renames", base
if (diff.exitCode !== 0) process.exit(diff.exitCode ?? 1);
const decision = await classifyAutoMerge(parseNameStatus(diff.stdout.toString()));
const loadPrevious = async (path: string) => {
const file = Bun.spawnSync(["git", "show", `${base}:${path}`], {
stdout: "pipe",
stderr: "inherit",
});
if (file.exitCode !== 0) throw new Error(`Failed to read ${path} at ${base}`);
return file.stdout.toString();
};
const decision = await classifyAutoMerge(parseNameStatus(diff.stdout.toString()), undefined, loadPrevious);
const summary = decision.safe
? `Safe to auto-merge: ${decision.created} created, ${decision.updated} updated, ${decision.deleted} deleted.`
: `Manual review required: ${decision.reasons.join("; ")}.`;
+5
View File
@@ -30,6 +30,7 @@ export const ModelFamilyValues = [
"claude-sonnet",
"claude-opus",
"claude-fable",
"claude-mythos",
// Gemini style
"gemini",
@@ -51,6 +52,7 @@ export const ModelFamilyValues = [
// Meta Muse
"muse",
"muse-free",
// Alibaba Qwen
"qwen",
@@ -365,6 +367,9 @@ export const ModelFamilyValues = [
// Conductor
"fugu",
// Sakana Namazu
"sakana-namazu",
// V0
"v0",
+5 -1
View File
@@ -397,6 +397,7 @@ export const Provider = z
const isOpenAI = data.npm === "@ai-sdk/openai";
const isOpenAIcompatible = data.npm === "@ai-sdk/openai-compatible";
const isOpenrouter = data.npm === "@openrouter/ai-sdk-provider";
const isMergeGateway = data.npm === "merge-gateway-ai-sdk-provider";
const isAnthropic = data.npm === "@ai-sdk/anthropic";
const isKiro = data.npm === "kiro-acp-ai-provider";
const hasApi = data.api !== undefined;
@@ -406,6 +407,8 @@ export const Provider = z
(isOpenAIcompatible && hasApi) ||
// openrouter: must have api
(isOpenrouter && hasApi) ||
// Merge Gateway: native provider with an OpenAI-compatible fallback
(isMergeGateway && hasApi) ||
// anthropic: api optional (always allowed)
isAnthropic ||
// openai: api optional (always allowed)
@@ -416,6 +419,7 @@ export const Provider = z
(!isOpenAI &&
!isOpenAIcompatible &&
!isOpenrouter &&
!isMergeGateway &&
!isAnthropic &&
!isKiro &&
!hasApi)
@@ -423,7 +427,7 @@ export const Provider = z
},
{
message:
"'api' is required for openai-compatible and openrouter, optional for anthropic, openai, and kiro, forbidden otherwise",
"'api' is required for openai-compatible, openrouter, and Merge Gateway; optional for anthropic, openai, and kiro; forbidden otherwise",
path: ["api"],
},
);
+38 -8
View File
@@ -1,9 +1,22 @@
import { readFile } from "node:fs/promises";
import { isDeepStrictEqual } from "node:util";
export const MAX_CREATED_MODELS = 10;
export const MAX_DELETED_MODELS = 10;
export const MAX_MODEL_CHURN = 15;
const REVIEWED_REASONING_PROVIDERS = new Set(["openrouter"]);
const REVIEWED_REASONING_PROVIDERS = new Set([
"crossmodel",
"edenai",
"empiriolabs",
"hyper",
"kilo",
"llmgateway",
"llmgateway-providers",
"merge-gateway",
"nano-gpt",
"openrouter",
"venice",
]);
export interface CatalogChange {
status: "created" | "updated" | "deleted";
@@ -29,6 +42,7 @@ function isProviderModel(path: string) {
export async function classifyAutoMerge(
changes: CatalogChange[],
load = (path: string) => readFile(path, "utf8"),
loadPrevious = load,
): Promise<AutoMergeDecision> {
const models = changes.filter((change) => isModel(change.path));
const created = models.filter((change) => change.status === "created").length;
@@ -42,18 +56,34 @@ export async function classifyAutoMerge(
reasons.push(`${created + deleted} models created or deleted (limit ${MAX_MODEL_CHURN})`);
}
for (const change of models) {
if (change.status === "deleted" || !isProviderModel(change.path)) continue;
const model = Bun.TOML.parse(await load(change.path)) as Record<string, unknown>;
const reasoningMetadata = async (path: string, loader: typeof load) => {
const model = Bun.TOML.parse(await loader(path)) as Record<string, unknown>;
let reasoning = model.reasoning;
if (reasoning === undefined && typeof model.base_model === "string") {
const base = Bun.TOML.parse(await load(`models/${model.base_model}.toml`)) as Record<string, unknown>;
const base = Bun.TOML.parse(await loader(`models/${model.base_model}.toml`)) as Record<string, unknown>;
reasoning = base.reasoning;
}
if (reasoning === true) {
if (!Object.hasOwn(model, "reasoning_options")) {
return {
reasoning,
reasoning_options: model.reasoning_options,
interleaved: model.interleaved,
base_model: model.base_model,
};
};
for (const change of models) {
if (change.status === "deleted" || !isProviderModel(change.path)) continue;
const current = await reasoningMetadata(change.path, load);
const previous = change.status === "created" ? undefined : await reasoningMetadata(change.path, loadPrevious);
const reasoningChanged = !current || !previous || !isDeepStrictEqual(current, previous);
if (!reasoningChanged) continue;
const reasoning = current?.reasoning === true || previous?.reasoning === true;
if (reasoning) {
if (current?.reasoning === true && current.reasoning_options === undefined) {
reasons.push(`${change.path} is a reasoning model without explicit reasoning_options`);
} else if (!REVIEWED_REASONING_PROVIDERS.has(change.path.split("/")[1]!)) {
reasons.push(`${change.path} is a reasoning model that requires manual review`);
+41 -5
View File
@@ -10,15 +10,18 @@ import { anthropic } from "./providers/anthropic.js";
import { baseten } from "./providers/baseten.js";
import { chutes } from "./providers/chutes.js";
import { cloudflareWorkersAi } from "./providers/cloudflare-workers-ai.js";
import { cortecs } from "./providers/cortecs.js";
import { crossmodel } from "./providers/crossmodel.js";
import { deepinfra } from "./providers/deepinfra.js";
import { digitalocean } from "./providers/digitalocean.js";
import { edenai } from "./providers/edenai.js";
import { empiriolabs } from "./providers/empiriolabs.js";
import { google } from "./providers/google.js";
import { hyper } from "./providers/hyper.js";
import { huggingface } from "./providers/huggingface.js";
import { inceptron } from "./providers/inceptron.js";
import { kilo } from "./providers/kilo.js";
import { llmgateway } from "./providers/llmgateway.js";
import { llmgateway, llmgatewayProviders } from "./providers/llmgateway.js";
import { mergeGateway } from "./providers/merge-gateway.js";
import { nanoGpt } from "./providers/nano-gpt.js";
import { openai } from "./providers/openai.js";
@@ -26,6 +29,7 @@ import { ofox } from "./providers/ofox.js";
import { openrouter } from "./providers/openrouter.js";
import { ovhcloud } from "./providers/ovhcloud.js";
import { pioneer } from "./providers/pioneer.js";
import { requesty } from "./providers/requesty.js";
import { tinfoil } from "./providers/tinfoil.js";
import { vercel } from "./providers/vercel.js";
import { venice } from "./providers/venice.js";
@@ -94,7 +98,17 @@ export interface SyncProvider<SourceModel> {
existing(id: string): ExistingModel | undefined;
authored(id: string): ExistingModel | undefined;
},
): { id: string; model: SyncedModel; metadata?: { id: string; model: SyncedMetadata } } | undefined;
): {
id: string;
model: SyncedModel;
metadata?: { id: string; model: SyncedMetadata };
/**
* Leading comment block for the written file when it has none of its own
* (e.g. the wire-path header every toggle reasoning control requires). A
* header already present on the existing file always wins.
*/
header?: string;
} | undefined;
}
export interface SyncResult {
@@ -115,15 +129,19 @@ export const providers: {
baseten: SyncProvider<any>;
chutes: SyncProvider<any>;
"cloudflare-workers-ai": SyncProvider<any>;
cortecs: SyncProvider<any>;
crossmodel: SyncProvider<any>;
deepinfra: SyncProvider<any>;
digitalocean: SyncProvider<any>;
edenai: SyncProvider<any>;
empiriolabs: SyncProvider<any>;
google: SyncProvider<any>;
hyper: SyncProvider<any>;
huggingface: SyncProvider<any>;
inceptron: SyncProvider<any>;
kilo: SyncProvider<any>;
llmgateway: SyncProvider<any>;
"llmgateway-providers": SyncProvider<any>;
"merge-gateway": SyncProvider<any>;
"nano-gpt": SyncProvider<any>;
ofox: SyncProvider<any>;
@@ -131,6 +149,7 @@ export const providers: {
openrouter: SyncProvider<any>;
ovhcloud: SyncProvider<any>;
pioneer: SyncProvider<any>;
requesty: SyncProvider<any>;
tinfoil: SyncProvider<any>;
vercel: SyncProvider<any>;
venice: SyncProvider<any>;
@@ -142,15 +161,19 @@ export const providers: {
baseten,
chutes,
"cloudflare-workers-ai": cloudflareWorkersAi,
cortecs,
crossmodel,
deepinfra,
digitalocean,
edenai,
empiriolabs,
google,
hyper,
huggingface,
inceptron,
kilo,
llmgateway,
"llmgateway-providers": llmgatewayProviders,
"merge-gateway": mergeGateway,
"nano-gpt": nanoGpt,
ofox,
@@ -158,6 +181,7 @@ export const providers: {
openrouter,
ovhcloud,
pioneer,
requesty,
tinfoil,
vercel,
venice,
@@ -168,18 +192,22 @@ export const providers: {
export const groups = {
aggregators: [
"crossmodel",
"edenai",
"empiriolabs",
"huggingface",
"inceptron",
"kilo",
"llmgateway",
"llmgateway-providers",
"merge-gateway",
"nano-gpt",
"ofox",
"requesty",
"openrouter",
"vercel",
],
cloudflare: ["cloudflare-workers-ai"],
direct: ["ambient", "anthropic", "baseten", "chutes", "deepinfra", "digitalocean", "google", "hyper", "openai", "ovhcloud", "pioneer", "tinfoil", "venice", "wandb", "xai"],
direct: ["ambient", "anthropic", "baseten", "chutes", "cortecs", "deepinfra", "digitalocean", "google", "hyper", "openai", "ovhcloud", "pioneer", "tinfoil", "venice", "wandb", "xai"],
} as const;
type ProviderID = keyof typeof providers;
@@ -255,13 +283,16 @@ export async function syncProvider<SourceModel>(
: preserveBaseModel(translated.model, existing.get(relativePath)?.authored);
const translatedBase = "base_model" in translatedModel ? translatedModel.base_model : undefined;
let resolvedReasoning: boolean | undefined;
let baseReasoningOptions: unknown;
if (translatedBase !== undefined) {
if (translated.metadata?.id === translatedBase) {
resolvedReasoning = translated.metadata.model.reasoning;
baseReasoningOptions = translated.metadata.model.reasoning_options;
} else {
modelMetadata ??= await readModelMetadata(provider.modelsDir);
const canonicalReasoning = modelMetadata[translatedBase]?.reasoning;
resolvedReasoning = typeof canonicalReasoning === "boolean" ? canonicalReasoning : undefined;
baseReasoningOptions = modelMetadata[translatedBase]?.reasoning_options;
}
} else {
resolvedReasoning = existing.get(relativePath)?.toml.reasoning;
@@ -270,6 +301,7 @@ export async function syncProvider<SourceModel>(
translatedModel,
existing.get(relativePath)?.authored,
resolvedReasoning,
baseReasoningOptions,
);
const withDescription = provider.preserveDescriptions === false
? withReasoningOptions
@@ -285,7 +317,7 @@ export async function syncProvider<SourceModel>(
desired.set(relativePath, {
model: parsed.data,
content: (existing.get(relativePath)?.header ?? "") + formatToml(parsed.data),
content: ((existing.get(relativePath)?.header || translated.header) ?? "") + formatToml(parsed.data),
});
}
@@ -461,6 +493,7 @@ export function preserveReasoningOptions(
model: SyncedModel,
existing: ExistingModel | undefined,
resolvedReasoning: boolean | undefined = existing?.reasoning,
baseReasoningOptions: unknown = undefined,
): SyncedModel {
if ((model.reasoning ?? resolvedReasoning) === false) {
const { reasoning_options: _reasoningOptions, ...withoutReasoningOptions } = model;
@@ -468,7 +501,10 @@ export function preserveReasoningOptions(
}
if (model.reasoning_options !== undefined) return model;
if (existing?.reasoning_options === undefined) {
return (model.reasoning ?? resolvedReasoning) === true
// When the base model already declares reasoning_options, leave the field
// unset so the factored file inherits them — stamping [] here would
// shadow the base's real controls with "no controls".
return (model.reasoning ?? resolvedReasoning) === true && baseReasoningOptions === undefined
? { ...model, reasoning_options: [] }
: model;
}
+28 -4
View File
@@ -1,7 +1,13 @@
import { z } from "zod";
import { describeModel } from "../../describe.js";
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
import type {
ExistingModel,
SyncProvider,
SyncedBaseModel,
SyncedFullModel,
SyncedModel,
} from "../index.js";
import { factorBaseModel, resolveCanonicalBaseModel } from "./openrouter.js";
const API_ENDPOINT = "https://inference.baseten.co/v1/models";
@@ -61,6 +67,7 @@ export const baseten = {
},
translateModel(model, context) {
const existing = context.existing(model.id);
const authored = context.authored(model.id);
const baseModel = existing === undefined
? resolveBasetenBaseModel(model.id)
: existing.base_model;
@@ -72,7 +79,7 @@ export const baseten = {
return {
id: model.id,
model: buildBasetenModel(model, existing, baseModel),
model: buildBasetenModel(model, existing, baseModel, authored),
};
},
} satisfies SyncProvider<BasetenModel>;
@@ -102,6 +109,7 @@ export function buildBasetenModel(
model: BasetenModel,
existing: ExistingModel | undefined,
baseModel = existing === undefined ? resolveBasetenBaseModel(model.id) : existing.base_model,
authored?: ExistingModel,
): SyncedModel {
const features = new Set(model.supported_features);
const samplingParameters = new Set(model.supported_sampling_parameters);
@@ -122,7 +130,9 @@ export function buildBasetenModel(
const limit = {
context: model.context_length,
input: existing?.limit?.input,
output: model.max_completion_tokens,
// Explicit provider limits are serving overrides and sync pins. Baseten's
// catalog has returned a model's context window as its completion limit.
output: authored?.limit?.output ?? model.max_completion_tokens,
};
const values: Partial<SyncedFullModel> = {
name: model.name ?? existing?.name,
@@ -159,7 +169,21 @@ export function buildBasetenModel(
if (limit.context === undefined || limit.output === undefined) {
throw new Error(`Baseten model ${model.id} has incomplete token limits required for sync`);
}
return factorBaseModel(baseModel, values, limit, existing?.base_model_omit);
const factored = factorBaseModel(
baseModel,
values,
limit,
existing?.base_model_omit,
) as SyncedBaseModel;
if (authored?.limit?.output === undefined) return factored;
return {
...factored,
limit: {
...factored.limit,
output: authored.limit.output,
},
};
}
const required = z.object({
+179
View File
@@ -0,0 +1,179 @@
import { z } from "zod";
import { describeModel } from "../../describe.js";
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
import { factorBaseModel, resolveModelMetadataBaseModel } from "./openrouter.js";
const API_ENDPOINT = "https://api.cortecs.ai/v1/models";
const CANONICAL_BASE_MODEL_EXCEPTIONS = {
"claude-sonnet-4": "anthropic/claude-sonnet-4-0",
} as const;
// Cortecs publishes its default catalog prices in EUR per million tokens.
// Exchange rate used by the existing Cortecs entries, as of 2026-07-30.
const EUR_TO_USD = 1.114;
const CortecsModality = z.enum(["text", "audio", "image", "video", "pdf"]);
type CortecsModality = z.infer<typeof CortecsModality>;
function modalities(values: string[]): CortecsModality[] {
const allowed = new Set<CortecsModality>(CortecsModality.options);
const result = values
.map((value) => value.toLowerCase())
.map((value) => value === "file" ? "pdf" : value)
.filter((value): value is CortecsModality => allowed.has(value as CortecsModality));
return [...new Set<CortecsModality>(result.length > 0 ? result : ["text"])];
}
export const CortecsModel = z.object({
id: z.string().min(1),
created: z.number().int().nonnegative(),
description: z.string().optional(),
pricing: z.object({
currency: z.literal("EUR"),
input_token: z.number().nonnegative(),
output_token: z.number().nonnegative(),
cache_read_cost: z.number().nonnegative().optional(),
cache_write_cost: z.number().nonnegative().optional(),
}).passthrough(),
context_size: z.number().int().positive(),
input_modalities: z.array(z.string()).transform(modalities).default(["text"]),
output_modalities: z.array(z.string()).transform(modalities).default(["text"]),
supported_features: z.array(z.string()).default([]),
}).passthrough();
export const CortecsResponse = z.object({
object: z.literal("list"),
data: z.array(CortecsModel),
}).passthrough();
export type CortecsModel = z.infer<typeof CortecsModel>;
export const cortecs = {
id: "cortecs",
name: "Cortecs",
modelsDir: "providers/cortecs/models",
deleteMissing: true,
async fetchModels() {
const response = await fetch(API_ENDPOINT);
if (!response.ok) {
throw new Error(`Cortecs models request failed: ${response.status} ${response.statusText}`);
}
return response.json();
},
parseModels(raw) {
return CortecsResponse.parse(raw).data;
},
translateModel(model, context) {
return {
id: model.id,
model: buildCortecsModel(model, context.existing(model.id), context.authored(model.id)),
};
},
} satisfies SyncProvider<CortecsModel>;
function dateFromTimestamp(timestamp: number) {
return new Date(timestamp * 1_000).toISOString().slice(0, 10);
}
function usd(value: number | undefined) {
if (value === undefined) return undefined;
return Math.round(value * EUR_TO_USD * 1_000) / 1_000;
}
export function buildCortecsModel(
model: CortecsModel,
existing: ExistingModel | undefined,
authored: ExistingModel | undefined,
): SyncedModel {
const features = new Set(model.supported_features);
const input = model.input_modalities;
const output = model.output_modalities;
const canonical = existing?.base_model ?? resolveCortecsBaseModel(model.id);
const sourceReasoning = features.has("reasoning");
const reasoning = canonical === undefined ? sourceReasoning : existing?.reasoning ?? sourceReasoning;
const reasoningOptions = canonical === undefined
? (sourceReasoning ? existing?.reasoning_options ?? [] : undefined)
: (existing?.reasoning === true ? existing.reasoning_options : undefined);
const limit = {
context: model.context_size,
input: existing?.limit?.input,
output: authored?.limit?.output ?? model.context_size,
};
const cost = {
input: usd(model.pricing.input_token),
output: usd(model.pricing.output_token),
cache_read: usd(model.pricing.cache_read_cost) ?? existing?.cost?.cache_read,
cache_write: usd(model.pricing.cache_write_cost) ?? existing?.cost?.cache_write,
reasoning: existing?.cost?.reasoning,
tiers: existing?.cost?.tiers,
};
if (canonical !== undefined) {
return factorBaseModel(canonical, {
description: existing?.description,
attachment: input.some((value) => value !== "text"),
reasoning,
reasoning_options: reasoningOptions,
temperature: existing?.temperature,
tool_call: features.has("tools"),
structured_output: features.has("json_mode"),
status: existing?.status,
interleaved: existing?.interleaved,
limit,
modalities: { input, output },
cost,
}, limit, existing?.base_model_omit);
}
const family = existing?.family;
return {
name: existing?.name ?? model.id,
description: existing?.description ?? model.description ?? describeModel({
id: model.id,
name: model.id,
family,
reasoning,
tool_call: features.has("tools"),
structured_output: features.has("json_mode"),
open_weights: existing?.open_weights ?? false,
limit,
modalities: { input, output },
}),
family,
release_date: existing?.release_date ?? dateFromTimestamp(model.created),
last_updated: existing?.last_updated ?? dateFromTimestamp(model.created),
attachment: input.some((value) => value !== "text"),
reasoning,
reasoning_options: reasoningOptions,
temperature: existing?.temperature ?? false,
tool_call: features.has("tools"),
structured_output: features.has("json_mode"),
knowledge: existing?.knowledge,
open_weights: existing?.open_weights ?? false,
status: existing?.status,
interleaved: existing?.interleaved,
cost,
limit,
modalities: { input, output },
} satisfies SyncedFullModel;
}
function resolveCortecsBaseModel(modelID: string) {
const exception = CANONICAL_BASE_MODEL_EXCEPTIONS[
modelID as keyof typeof CANONICAL_BASE_MODEL_EXCEPTIONS
];
if (exception !== undefined) return resolveModelMetadataBaseModel(exception);
const trailingFamily = /^claude-(\d+)-(\d+)-(opus|sonnet|haiku)$/.exec(modelID);
if (trailingFamily !== null) {
const [, major, minor, family] = trailingFamily;
return resolveModelMetadataBaseModel(`anthropic/claude-${family}-${major}-${minor}`);
}
const compactFamily = /^claude-(opus|sonnet|haiku)(\d+)-(\d+)$/.exec(modelID);
if (compactFamily !== null) {
const [, family, major, minor] = compactFamily;
return resolveModelMetadataBaseModel(`anthropic/claude-${family}-${major}-${minor}`);
}
return resolveModelMetadataBaseModel(modelID);
}
+15 -18
View File
@@ -22,13 +22,17 @@ function baseModelExists(modelID: string): boolean {
// CROSSMODEL_MODELS_URL overrides the endpoint (e.g. a local backend) for testing.
const API_ENDPOINT = process.env.CROSSMODEL_MODELS_URL ?? "https://www.crossmodel.ai/api/models";
const REASONING_EFFORTS = ["none", "minimal", "low", "medium", "high", "xhigh", "max", "default"] as const;
const ReasoningCapability = z
.object({
toggle: z.boolean().optional(),
effort: z.array(z.string()).optional(),
supported: z.boolean().optional(),
toggle: z.boolean().nullish().transform((value) => value ?? undefined),
effort: z.array(z.enum(REASONING_EFFORTS)).nullish().transform((value) => value ?? undefined),
budget_tokens: z
.object({ min: z.number().optional(), max: z.number().optional() })
.optional(),
.nullish()
.transform((value) => value ?? undefined),
})
.passthrough();
@@ -55,7 +59,10 @@ export const CrossModelModel = z
.object({ input: z.array(z.string()), output: z.array(z.string()) })
.optional(),
capabilities: z
.object({ reasoning: ReasoningCapability.optional() })
.object({
json: z.boolean().optional(),
reasoning: ReasoningCapability.optional(),
})
.passthrough()
.nullable()
.optional(),
@@ -155,27 +162,17 @@ function modalities(values: string[] | undefined, fallback: Modality[]): Modalit
return [...new Set(result.length > 0 ? result : fallback)];
}
// models.dev's reasoning_options effort enum (schema.ts ReasoningEffortValue).
// Guarding against it means an unexpected upstream value is dropped instead of
// silently producing a TOML that fails `validate`.
const REASONING_EFFORTS = ["none", "minimal", "low", "medium", "high", "xhigh", "max", "default"] as const;
type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
function isReasoningEffort(value: string): value is ReasoningEffort {
return (REASONING_EFFORTS as readonly string[]).includes(value);
}
// Project CrossModel's capabilities.reasoning onto models.dev reasoning_options.
// reasoning absent -> undefined (non-reasoning model; option omitted)
// reasoning === {} -> [] (model reasons, no verified user-selectable control)
// otherwise -> toggle / effort / budget_tokens entries
function reasoningOptions(model: CrossModelModel): SyncedModel["reasoning_options"] {
const reasoning = model.capabilities?.reasoning;
if (reasoning === undefined) return undefined;
if (reasoning === undefined || reasoning.supported === false) return undefined;
const options: NonNullable<SyncedModel["reasoning_options"]> = [];
if (reasoning.toggle === true) options.push({ type: "toggle" });
if (reasoning.effort !== undefined) {
const values = reasoning.effort.filter(isReasoningEffort);
if (values.length > 0) options.push({ type: "effort", values });
if (reasoning.effort.length > 0) options.push({ type: "effort", values: reasoning.effort });
}
if (reasoning.budget_tokens !== undefined) {
const budget: { type: "budget_tokens"; min?: number; max?: number } = { type: "budget_tokens" };
@@ -186,7 +183,7 @@ function reasoningOptions(model: CrossModelModel): SyncedModel["reasoning_option
return options;
}
function buildCrossModel(
export function buildCrossModel(
model: CrossModelModel,
existing: ExistingModel | undefined,
): SyncedModel | undefined {
@@ -247,7 +244,7 @@ function buildCrossModel(
reasoning: existing?.reasoning,
temperature: existing?.temperature,
tool_call: existing?.tool_call,
structured_output: existing?.structured_output,
structured_output: model.capabilities?.json ?? existing?.structured_output,
knowledge: existing?.knowledge,
modalities: modality,
reasoning_options,
@@ -372,6 +372,7 @@ export function buildDeepInfraModel(
// catalog's canonical metadata namespace so new models can inherit via
// `base_model` whenever a `models/` entry already exists.
const DEEPINFRA_PREFIXES: Record<string, string> = {
ByteDance: "bytedance-seed",
"deepseek-ai": "deepseek",
"meta-llama": "meta",
google: "google",
+506
View File
@@ -0,0 +1,506 @@
import { existsSync, readdirSync, readFileSync } from "node:fs";
import path from "node:path";
import { z } from "zod";
import type { SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
import {
factorBaseModel,
modelMetadata,
resolveModelMetadataBaseModel,
} from "./openrouter.js";
// ========================================
// Constants
// ========================================
const API_ENDPOINT = "https://api.edenai.run/v3/models";
const MODELS_DIR = path.join(
import.meta.dirname,
"..",
"..",
"..",
"..",
"..",
"models",
);
const PROVIDERS_DIR = path.join(MODELS_DIR, "..", "providers");
const TOKENS_PER_MILLION = 1_000_000;
const PRICE_DECIMALS = 1_000_000;
// Values `reasoning_effort` accepts on POST /v3/chat/completions. Which of them
// a given model exposes comes from its lab entry, not from this list.
const ACCEPTED_EFFORTS = new Set([
"none",
"minimal",
"low",
"medium",
"high",
"xhigh",
"max",
]);
const REGION_SUFFIX = /@[a-z0-9-]+$/i;
const DOTTED_VENDOR = /^[a-z0-9-]+\./;
const VERSION_TAIL = /-v\d+:\d+$/;
const DATE_TAIL = /-\d{8}$/;
const DATABRICKS_PREFIX = "databricks-";
const TIER_KEY = /^input_cost_per_token_above_(\d+)k_tokens$/;
const MODALITY_BY_EDENAI: Record<
string,
SyncedFullModel["modalities"]["input"][number]
> = {
text: "text",
image: "image",
audio: "audio",
video: "video",
file: "pdf",
};
// Upstreams that are the lab's own API for models under that namespace.
const LAB_UPSTREAMS: Record<string, readonly string[]> = {
alibaba: ["qwen"],
amazon: ["amazon"],
anthropic: ["anthropic"],
cohere: ["cohere"],
deepseek: ["deepseek"],
google: ["google", "vertex"],
microsoft: ["microsoft"],
minimax: ["minimax"],
mistral: ["mistral"],
moonshotai: ["moonshot"],
openai: ["openai"],
perplexity: ["perplexityai"],
xai: ["xai"],
zhipuai: ["zai"],
};
type ReasoningOption = NonNullable<
SyncedFullModel["reasoning_options"]
>[number];
const canonicalNameByID = new Map<string, string>();
let firstPartyBaseModels: ReadonlySet<string> = new Set();
// ========================================
// Schemas
// ========================================
const EdenAIPricing = z
.object({
input_cost_per_token: z.number().nullish(),
output_cost_per_token: z.number().nullish(),
output_cost_per_reasoning_token: z.number().nullish(),
cache_read_input_token_cost: z.number().nullish(),
cache_creation_input_token_cost: z.number().nullish(),
input_cost_per_audio_token: z.number().nullish(),
})
.passthrough();
const EdenAICapabilities = z
.object({
input_modalities: z.array(z.string()).nullish(),
output_modalities: z.array(z.string()).nullish(),
supports_function_calling: z.boolean().optional(),
supports_response_schema: z.boolean().optional(),
})
.passthrough();
export const EdenAIModel = z
.object({
id: z.string().min(1),
owned_by: z.string().min(1),
model_name: z.string().min(1),
context_length: z.number().nullish(),
capabilities: EdenAICapabilities,
pricing: EdenAIPricing.nullish(),
list_pricing: EdenAIPricing.nullish(),
alias_of: z.string().nullish(),
})
.passthrough();
export const EdenAIResponse = z
.object({
object: z.literal("list"),
data: z.array(EdenAIModel),
})
.passthrough();
export type EdenAIModel = z.infer<typeof EdenAIModel>;
// ========================================
// Base model resolution
// ========================================
function baseModelExists(modelID: string) {
return existsSync(path.join(MODELS_DIR, `${modelID}.toml`));
}
// Ids are `<upstream>/<native id>`, so each upstream keeps its own convention.
function baseModelCandidates(modelName: string) {
const candidates = [modelName];
if (DOTTED_VENDOR.test(modelName)) {
const dotted = modelName.replace(".", "/");
candidates.push(
dotted,
dotted.replace(VERSION_TAIL, "").replace(DATE_TAIL, ""),
);
}
const last = modelName.split("/").at(-1) ?? modelName;
candidates.push(last);
if (last.startsWith(DATABRICKS_PREFIX)) {
candidates.push(last.slice(DATABRICKS_PREFIX.length));
}
candidates.push(last.replace(VERSION_TAIL, "").replace(DATE_TAIL, ""));
return [...new Set(candidates)].filter((candidate) => candidate.length > 0);
}
export function resolveEdenAIBaseModel(model: EdenAIModel) {
const names = [model.model_name.replace(REGION_SUFFIX, "")];
if (model.alias_of != null) {
const target = model.alias_of.split("/").slice(1).join("/");
if (target.length > 0) names.push(target);
}
for (const name of names) {
for (const candidate of baseModelCandidates(name)) {
const resolved = resolveModelMetadataBaseModel(candidate);
if (resolved !== undefined && baseModelExists(resolved)) return resolved;
}
}
return undefined;
}
function isFirstPartyRoute(model: EdenAIModel, baseModel: string) {
const lab = baseModel.split("/")[0] ?? "";
return (LAB_UPSTREAMS[lab] ?? []).includes(model.owned_by);
}
export function collectFirstPartyBaseModels(models: readonly EdenAIModel[]) {
const bases = new Set<string>();
for (const model of models) {
const baseModel = resolveEdenAIBaseModel(model);
if (baseModel !== undefined && isFirstPartyRoute(model, baseModel)) {
bases.add(baseModel);
}
}
return bases;
}
function canonicalModelName(baseModel: string) {
let cached = canonicalNameByID.get(baseModel);
if (cached === undefined) {
try {
const toml = Bun.TOML.parse(
readFileSync(path.join(MODELS_DIR, `${baseModel}.toml`), "utf8"),
) as { name?: unknown };
cached = typeof toml.name === "string" ? toml.name : "";
} catch {
cached = "";
}
canonicalNameByID.set(baseModel, cached);
}
return cached === "" ? undefined : cached;
}
function hasOutputLimit(baseModel: string) {
const limit = modelMetadata(baseModel).limit;
return (
typeof limit === "object" &&
limit !== null &&
typeof (limit as { output?: unknown }).output === "number"
);
}
function regionVariantName(model: EdenAIModel, baseModel: string) {
const region = REGION_SUFFIX.exec(model.id)?.[0].slice(1);
if (region === undefined) return undefined;
const canonical = canonicalModelName(baseModel);
if (canonical === undefined) return undefined;
return `${canonical} (${region.toUpperCase()})`;
}
// ========================================
// Reasoning options
// ========================================
// Eden AI's only reasoning control is `reasoning_effort`, so a model is
// published with the effort list its lab entry (or an established relay peer)
// already documents. Peers exposing only `toggle` / `budget_tokens` have no
// equivalent here, and those models are skipped rather than given a guess.
function effortValues(options: unknown): string[] | "always-on" | undefined {
if (!Array.isArray(options)) return undefined;
if (options.length === 0) return "always-on";
let toggled = false;
let accepted: string[] | undefined;
for (const option of options) {
if (typeof option !== "object" || option === null) continue;
const type = (option as { type?: unknown }).type;
if (type === "toggle") toggled = true;
if (type !== "effort") continue;
const values = (option as { values?: unknown }).values;
if (!Array.isArray(values)) continue;
const filtered = values.filter(
(value): value is string =>
typeof value === "string" && ACCEPTED_EFFORTS.has(value),
);
if (filtered.length > 0) accepted = filtered;
}
if (accepted === undefined) return undefined;
// Eden AI switches reasoning off with `reasoning_effort=none`, so a lab-side
// toggle becomes `none` in the effort list instead of a separate option.
return toggled && !accepted.includes("none")
? ["none", ...accepted]
: accepted;
}
function parseToml(filePath: string) {
try {
return Bun.TOML.parse(readFileSync(filePath, "utf8")) as Record<
string,
unknown
>;
} catch {
return undefined;
}
}
function tomlFilesIn(dir: string): string[] {
let entries;
try {
entries = readdirSync(dir, { withFileTypes: true });
} catch {
return [];
}
return entries.flatMap((entry) =>
entry.isDirectory()
? tomlFilesIn(path.join(dir, entry.name))
: entry.name.endsWith(".toml")
? [path.join(dir, entry.name)]
: [],
);
}
// OpenRouter is the established same-surface relay, so it is the one peer
// consulted when a lab entry documents no effort levels.
const PEER_PROVIDER = "openrouter";
let peerEfforts: Map<string, string[] | "always-on"> | undefined;
function peerEffortsByBaseModel() {
if (peerEfforts !== undefined) return peerEfforts;
peerEfforts = new Map();
for (const file of tomlFilesIn(
path.join(PROVIDERS_DIR, PEER_PROVIDER, "models"),
)) {
const toml = parseToml(file);
const base = toml?.base_model;
if (typeof base !== "string" || peerEfforts.has(base)) continue;
const values = effortValues(toml?.reasoning_options);
if (values !== undefined) peerEfforts.set(base, values);
}
return peerEfforts;
}
export function reasoningOptionsFor(
baseModel: string,
): SyncedFullModel["reasoning_options"] | undefined {
const [lab, ...rest] = baseModel.split("/");
const firstParty = effortValues(
parseToml(
path.join(PROVIDERS_DIR, lab ?? "", "models", `${rest.join("/")}.toml`),
)?.reasoning_options,
);
const derived = firstParty ?? peerEffortsByBaseModel().get(baseModel);
if (derived === undefined) return undefined;
if (derived === "always-on") return [];
return [{ type: "effort", values: derived } as ReasoningOption];
}
// ========================================
// Cost
// ========================================
function pricePerMillion(price: number) {
return (
Math.round(price * TOKENS_PER_MILLION * PRICE_DECIMALS) / PRICE_DECIMALS
);
}
function chargedPricePerMillion(price: unknown) {
return typeof price === "number" && price > 0
? pricePerMillion(price)
: undefined;
}
function costTiers(pricing: Record<string, unknown>) {
const thresholds = Object.keys(pricing)
.map((key) => TIER_KEY.exec(key)?.[1])
.filter((value): value is string => value !== undefined)
.map(Number)
.sort((a, b) => a - b);
return thresholds.flatMap((threshold) => {
// Built explicitly so `..._above_1hr_above_200k_tokens` is never read as a
// context tier.
const suffix = `_above_${threshold}k_tokens`;
const input = pricing[`input_cost_per_token${suffix}`];
const output = pricing[`output_cost_per_token${suffix}`];
if (typeof input !== "number" || typeof output !== "number") return [];
return [
{
tier: { type: "context" as const, size: threshold * 1_000 },
input: pricePerMillion(input),
output: pricePerMillion(output),
cache_read: chargedPricePerMillion(
pricing[`cache_read_input_token_cost${suffix}`],
),
cache_write: chargedPricePerMillion(
pricing[`cache_creation_input_token_cost${suffix}`],
),
},
];
});
}
function buildCost(
model: EdenAIModel,
reasoning: boolean,
): SyncedFullModel["cost"] {
// `pricing` carries account-level discounts; `list_pricing` is the public rate.
const pricing = model.list_pricing ?? model.pricing;
if (pricing == null) return undefined;
const input = pricing.input_cost_per_token;
const output = pricing.output_cost_per_token;
if (input == null || output == null) return undefined;
const tiers = costTiers(pricing);
return {
input: pricePerMillion(input),
output: pricePerMillion(output),
reasoning: reasoning
? chargedPricePerMillion(pricing.output_cost_per_reasoning_token)
: undefined,
cache_read: chargedPricePerMillion(pricing.cache_read_input_token_cost),
cache_write: chargedPricePerMillion(
pricing.cache_creation_input_token_cost,
),
input_audio: chargedPricePerMillion(pricing.input_cost_per_audio_token),
tiers: tiers.length > 0 ? tiers : undefined,
};
}
// ========================================
// Model translation
// ========================================
function mapModalities(values: readonly string[] | null | undefined) {
if (values == null) return undefined;
const mapped = [
...new Set(
values
.map((value) => MODALITY_BY_EDENAI[value.toLowerCase()])
.filter(
(value): value is NonNullable<typeof value> => value !== undefined,
),
),
];
return mapped.length > 0 ? mapped : undefined;
}
export function buildEdenAIModel(
model: EdenAIModel,
firstParty: ReadonlySet<string> = firstPartyBaseModels,
): SyncedModel | undefined {
const baseModel = resolveEdenAIBaseModel(model);
// Eden AI relays other labs' models only, so an entry needs its lab metadata.
if (baseModel === undefined) return undefined;
// The catalog reports no output limit, so the base has to resolve one.
if (!hasOutputLimit(baseModel)) return undefined;
// Where Eden AI relays the lab's own API, that route is the entry. Models
// with no first-party route keep every route, since their prices differ and
// there is no canonical one to pick.
if (firstParty.has(baseModel) && !isFirstPartyRoute(model, baseModel)) {
return undefined;
}
const capabilities = model.capabilities;
const input = mapModalities(capabilities.input_modalities);
const output = mapModalities(capabilities.output_modalities);
const modalities =
input !== undefined && output !== undefined ? { input, output } : undefined;
// Whether a model reasons is a property of the model, not of the relay, so
// the lab entry owns it and only the effort controls are authored here.
const reasoning = modelMetadata(baseModel).reasoning === true;
const reasoningOptions = reasoning
? reasoningOptionsFor(baseModel)
: undefined;
if (reasoning && reasoningOptions === undefined) return undefined;
const limit =
model.context_length != null && model.context_length > 0
? { context: model.context_length }
: undefined;
return factorBaseModel(
baseModel,
{
name: regionVariantName(model, baseModel),
modalities,
attachment: input?.some((value) => value !== "text"),
reasoning_options: reasoningOptions,
tool_call: capabilities.supports_function_calling,
structured_output: capabilities.supports_response_schema,
cost: buildCost(model, reasoning),
limit,
},
limit,
);
}
// ========================================
// Eden AI provider
// ========================================
export const edenai = {
id: "edenai",
name: "Eden AI",
modelsDir: "providers/edenai/models",
preserveBaseModels: false,
preserveDescriptions: false,
async fetchModels() {
const response = await fetch(API_ENDPOINT);
if (!response.ok) {
throw new Error(
`Eden AI request failed: ${response.status} ${response.statusText}`,
);
}
return response.json();
},
parseModels(raw) {
const models = EdenAIResponse.parse(raw).data;
firstPartyBaseModels = collectFirstPartyBaseModels(models);
return models;
},
translateModel(model) {
const built = buildEdenAIModel(model);
if (built === undefined) return undefined;
return { id: model.id, model: built };
},
} satisfies SyncProvider<EdenAIModel>;
+68 -56
View File
@@ -1,26 +1,18 @@
import { z } from "zod";
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
import { factorBaseModel, resolveCanonicalBaseModel } from "./openrouter.js";
import { factorBaseModel, resolveCanonicalBaseModel, resolveModelMetadataBaseModel } from "./openrouter.js";
// EmpirioLabs exposes a public, unauthenticated OpenAI-compatible model
// catalog, so no API key is needed or used for this sync.
const API_ENDPOINT = "https://api.empiriolabs.ai/v1/models";
// Keep this for slugs that cannot be derived from a lab filename.
// Family prefixes, version-dot slugs, unique filenames, and dated/version
// suffixes are resolved automatically by resolveEmpiriolabsBaseModel.
const CANONICAL_BASE_MODELS: Record<string, string> = {
"fugu-ultra": "sakana/fugu-ultra",
"deepseek-v4-flash-0731": "deepseek/deepseek-v4-flash-0731",
"gemma-4-26b-a4b": "google/gemma-4-26b-a4b-it",
"gemma-4-e4b": "google/gemma-4-E4B-it",
"mistral-medium-3": "mistral/mistral-medium-2505",
"mistral-small-4": "mistral/mistral-small-2603",
"muse-spark-1-1": "meta/muse-spark-1.1",
"qwen3-5-9b": "alibaba/qwen3.5-9b",
"qwen3-7-max": "alibaba/qwen3.7-max",
"qwen3-7-plus": "alibaba/qwen3.7-plus",
"step-3-5-flash": "stepfun/step-3.5-flash",
"step-3-5-flash-2603": "stepfun/step-3.5-flash-2603",
"step-3-7-flash": "stepfun/step-3.7-flash",
};
const EmpiriolabsParameter = z
@@ -209,55 +201,75 @@ function parameterOutputLimit(model: EmpiriolabsModel) {
return parameter?.max !== undefined && parameter.max > 0 ? parameter.max : undefined;
}
function applyVersionDots(id: string) {
return id
.replace(/^(qwen\d+)-(\d+)/, "$1.$2")
.replace(/^(seed-\d+)-(\d+)/, "$1.$2")
.replace(/^(muse-[a-z]+)-(\d+)-(\d+)$/, "$1-$2.$3")
.replace(/^(glm-\d+)-(\d+)/, "$1.$2")
.replace(/^(kimi-k\d+)-(\d+)/, "$1.$2")
.replace(/^(minimax-m\d+)-(\d+)/, "$1.$2")
.replace(/^(mimo-v\d+)-(\d+)/, "$1.$2")
.replace(/^(deepseek-v\d+)-(\d+)/, "$1.$2")
.replace(/^(step-\d+)-(\d+)/, "$1.$2");
}
function stripProductSuffixes(id: string) {
const out: string[] = [];
if (/-v\d+(-\d+)?$/.test(id)) {
const dropPatch = id.replace(/-\d+$/, "");
if (dropPatch !== id) out.push(dropPatch);
out.push(id.replace(/-v\d+(-\d+)?$/, ""));
}
if (/-\d{4}$/.test(id)) out.push(id.replace(/-\d{4}$/, ""));
return out;
}
function idVariants(id: string) {
const variants = [id];
const dotted = applyVersionDots(id);
if (dotted !== id) variants.push(dotted);
for (const stripped of stripProductSuffixes(id)) {
if (!variants.includes(stripped)) variants.push(stripped);
const strippedDotted = applyVersionDots(stripped);
if (!variants.includes(strippedDotted)) variants.push(strippedDotted);
}
return variants;
}
function prefixesFor(id: string) {
if (id.startsWith("deepseek-")) return ["deepseek"];
if (id.startsWith("glm-")) return ["z-ai"];
if (id.startsWith("kimi-")) return ["moonshotai"];
if (id.startsWith("minimax-")) return ["minimax"];
if (id.startsWith("mimo-")) return ["xiaomi"];
if (id.startsWith("qwen")) return ["qwen"];
if (id.startsWith("muse-")) return ["meta"];
if (id.startsWith("seed-")) return ["bytedance-seed"];
if (id.startsWith("fugu-")) return ["sakana"];
if (id.startsWith("gemma-")) return ["google"];
if (id.startsWith("step") && !id.startsWith("stepaudio")) return ["stepfun"];
if (id.startsWith("mistral-")) return ["mistralai"];
return [];
}
export function resolveEmpiriolabsBaseModel(id: string) {
const explicit = CANONICAL_BASE_MODELS[id];
if (explicit !== undefined) return explicit;
return canonicalCandidates(id)
.map((candidate) => resolveCanonicalBaseModel(candidate))
.find((candidate) => candidate !== undefined);
}
function canonicalCandidates(id: string) {
const candidates: string[] = [];
if (id.startsWith("deepseek-")) {
candidates.push(`deepseek/${id}`);
candidates.push(`deepseek/${id.replace(/^deepseek-v(\d+)-(\d+)/, "deepseek-v$1.$2")}`);
for (const variant of idVariants(id)) {
for (const prefix of prefixesFor(variant)) {
const resolved = resolveCanonicalBaseModel(`${prefix}/${variant}`);
if (resolved !== undefined) return resolved;
if (prefix === "google" && !variant.endsWith("-it")) {
const instruct = resolveCanonicalBaseModel(`${prefix}/${variant}-it`);
if (instruct !== undefined) return instruct;
}
}
const unique = resolveModelMetadataBaseModel(variant);
if (unique !== undefined) return unique;
}
if (id.startsWith("glm-")) {
const normalized = id
.replace(/^glm-(\d+)-(\d+)/, "glm-$1.$2")
.replace(/^glm-(\d+)-(\d+)v/, "glm-$1.$2v");
candidates.push(`z-ai/${id}`);
candidates.push(`z-ai/${normalized}`);
}
if (id.startsWith("kimi-")) {
const normalized = id.replace(/^(kimi-k\d+)-(\d+)/, "$1.$2");
candidates.push(`moonshotai/${id}`);
candidates.push(`moonshotai/${normalized}`);
}
if (id.startsWith("minimax-")) {
const normalized = id.replace(/^minimax-m(\d+)-(\d+)/, "minimax-m$1.$2");
candidates.push(`minimax/${id}`);
candidates.push(`minimax/${normalized}`);
}
if (id.startsWith("mimo-")) {
const normalized = id.replace(/^mimo-v(\d+)-(\d+)/, "mimo-v$1.$2");
candidates.push(`xiaomi/${id}`);
candidates.push(`xiaomi/${normalized}`);
}
if (id.startsWith("qwen")) {
const normalized = id.replace(/^(qwen\d+)-(\d+)/, "$1.$2");
candidates.push(`qwen/${id}`);
candidates.push(`qwen/${normalized}`);
}
return [...new Set(candidates)];
return undefined;
}
export function buildEmpiriolabsModel(
@@ -0,0 +1,208 @@
import { existsSync } from "node:fs";
import path from "node:path";
import { z } from "zod";
import { ReasoningOption } from "../../schema.js";
import type { SyncProvider, SyncedModel } from "../index.js";
import { factorBaseModel } from "./openrouter.js";
const API_ENDPOINT = process.env.INCEPTRON_MODELS_URL ?? "https://api.inceptron.io/v1/models";
const MODELS_DIR = path.join(import.meta.dirname, "..", "..", "..", "..", "..", "models");
const ModelsDevMetadata = z
.object({
base_model: z.string().regex(/^[^./\\][^/\\]*\/[^./\\][^/\\]*$/),
reasoning_options: z.array(ReasoningOption).optional(),
interleaved: z
.union([
z.literal(true),
z.object({ field: z.enum(["reasoning_content", "reasoning_details"]) }).strict(),
])
.optional(),
status: z.enum(["alpha", "beta", "deprecated"]).optional(),
})
.strict();
export const InceptronModel = z.object({
id: z.string().min(1),
name: z.string().min(1),
is_ready: z.boolean().optional(),
context_length: z.number().int().positive(),
max_output_length: z.number().int().positive(),
input_modalities: z.array(z.string()).min(1),
output_modalities: z.array(z.string()).min(1),
supported_features: z.array(z.string()),
supported_sampling_parameters: z.array(z.string()),
pricing: z.object({
prompt: z.string(),
completion: z.string(),
input_cache_reads: z.string().optional(),
input_cache_writes: z.string().optional(),
}),
models_dev: ModelsDevMetadata.optional(),
});
export const InceptronResponse = z
.object({
object: z.literal("list"),
data: z.array(InceptronModel),
})
.strict();
export type InceptronModel = z.infer<typeof InceptronModel>;
export type ReadyInceptronModel = InceptronModel & {
models_dev: z.infer<typeof ModelsDevMetadata>;
};
export const inceptron = {
id: "inceptron",
name: "Inceptron",
modelsDir: "providers/inceptron/models",
async fetchModels() {
const response = await fetch(API_ENDPOINT);
if (!response.ok) {
throw new Error(`Inceptron request failed: ${response.status} ${response.statusText}`);
}
return response.json();
},
parseModels: parseInceptronModels,
translateModel(model) {
return { id: model.id, model: buildInceptronModel(model) };
},
} satisfies SyncProvider<ReadyInceptronModel>;
export function parseInceptronModels(raw: unknown): ReadyInceptronModel[] {
const models = InceptronResponse.parse(raw).data.filter((model) => model.is_ready !== false);
const seen = new Set<string>();
return models.map((model) => {
if (seen.has(model.id)) throw new Error(`Duplicate ready Inceptron model ID: ${model.id}`);
seen.add(model.id);
if (model.models_dev === undefined) {
throw new Error(`Ready Inceptron model ${model.id} is missing models_dev metadata`);
}
if (!baseModelExists(model.models_dev.base_model)) {
throw new Error(
`Ready Inceptron model ${model.id} refers to missing base model ${model.models_dev.base_model}`,
);
}
validateReasoningContract(model as ReadyInceptronModel);
validatePricing(model);
validateModalities(model);
return model as ReadyInceptronModel;
});
}
export function buildInceptronModel(model: ReadyInceptronModel): SyncedModel {
const features = new Set(model.supported_features);
const samplingParameters = new Set(model.supported_sampling_parameters);
const input = validateModalities(model).input;
const output = validateModalities(model).output;
const limit = {
context: model.context_length,
output: model.max_output_length,
};
return factorBaseModel(
model.models_dev.base_model,
{
name: model.name,
attachment: input.some((modality) => modality !== "text"),
reasoning: features.has("reasoning"),
reasoning_options: model.models_dev.reasoning_options,
interleaved: model.models_dev.interleaved,
tool_call: features.has("tools"),
structured_output: features.has("structured_outputs"),
temperature: samplingParameters.has("temperature"),
status: model.models_dev.status,
cost: {
input: perTokenToPerMillion(model.pricing.prompt),
output: perTokenToPerMillion(model.pricing.completion),
cache_read: optionalPrice(model.pricing.input_cache_reads),
cache_write: optionalPrice(model.pricing.input_cache_writes),
},
limit,
modalities: { input, output },
},
limit,
);
}
function baseModelExists(modelID: string) {
return existsSync(path.join(MODELS_DIR, `${modelID}.toml`));
}
function validateReasoningContract(model: ReadyInceptronModel) {
const supportsReasoning = model.supported_features.includes("reasoning");
const options = model.models_dev.reasoning_options;
if (supportsReasoning !== (options !== undefined)) {
throw new Error(
`Inceptron model ${model.id} must expose reasoning_options exactly when reasoning is supported`,
);
}
if (model.models_dev.interleaved !== undefined && !supportsReasoning) {
throw new Error(`Inceptron model ${model.id} exposes interleaving without reasoning`);
}
const optionTypes = options?.map((option) => option.type) ?? [];
if (new Set(optionTypes).size !== optionTypes.length) {
throw new Error(`Inceptron model ${model.id} has duplicate reasoning option types`);
}
const exposesEffort = optionTypes.includes("effort");
const advertisesEffort = model.supported_sampling_parameters.includes("reasoning_effort");
if (exposesEffort !== advertisesEffort) {
throw new Error(
`Inceptron model ${model.id} must advertise reasoning_effort exactly when effort options are exposed`,
);
}
}
type Modality = "text" | "audio" | "image" | "video" | "pdf";
const MODALITIES = new Set<Modality>(["text", "audio", "image", "video", "pdf"]);
function validateModalities(model: InceptronModel): { input: Modality[]; output: Modality[] } {
const parse = (direction: "input" | "output", values: string[]) => {
const unique = [...new Set(values)];
for (const value of unique) {
if (!MODALITIES.has(value as Modality)) {
throw new Error(`Inceptron model ${model.id} has unsupported ${direction} modality: ${value}`);
}
}
return unique as Modality[];
};
return {
input: parse("input", model.input_modalities),
output: parse("output", model.output_modalities),
};
}
function validatePricing(model: InceptronModel) {
perTokenToPerMillion(model.pricing.prompt);
perTokenToPerMillion(model.pricing.completion);
optionalPrice(model.pricing.input_cache_reads);
optionalPrice(model.pricing.input_cache_writes);
}
function optionalPrice(value: string | undefined) {
return value === undefined ? undefined : perTokenToPerMillion(value);
}
/** Convert a non-negative decimal USD/token string to USD/million tokens without floating-point multiplication. */
export function perTokenToPerMillion(value: string): number {
const match = /^(0|[1-9]\d*)(?:\.(\d+))?$/.exec(value);
if (match === null) throw new Error(`Invalid Inceptron per-token price: ${value}`);
const integer = match[1] as string;
const fraction = match[2] ?? "";
const digits = `${integer}${fraction}`.replace(/^0+(?=\d)/, "");
const decimalPlaces = fraction.length - 6;
const scaled = decimalPlaces <= 0
? `${digits}${"0".repeat(-decimalPlaces)}`
: `${digits.slice(0, -decimalPlaces) || "0"}.${digits.slice(-decimalPlaces).padStart(decimalPlaces, "0")}`;
const result = Number(scaled);
if (!Number.isFinite(result) || result < 0) {
throw new Error(`Invalid Inceptron per-token price: ${value}`);
}
return result;
}
+532 -42
View File
@@ -1,22 +1,30 @@
import { z } from "zod";
import { existsSync, readFileSync } from "node:fs";
import path from "node:path";
import { describeModel } from "../../describe.js";
import { inferKimiFamily, ModelFamilyValues } from "../../family.js";
import { ReasoningOption } from "../../schema.js";
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
import { factorBaseModel, resolveCanonicalBaseModel } from "./openrouter.js";
import { factorBaseModel, resolveModelMetadataBaseModel } from "./openrouter.js";
const API_ENDPOINT = "https://api.llmgateway.io/v1/models";
// LLM Gateway names the originating lab in `family`; most already match the
// canonical prefixes understood by resolveCanonicalBaseModel. Alias the few that
// spell the lab differently. (Mirrors huggingface's CANONICAL_ORG_PREFIXES.)
// canonical prefixes understood by resolveModelMetadataBaseModel, and labs
// outside that shared table (e.g. perplexity) resolve through its exact
// `models/` path match without widening the OpenRouter prefix map for every
// other provider. Alias the few that spell the lab differently. (Mirrors
// huggingface's CANONICAL_ORG_PREFIXES.)
const CANONICAL_FAMILY_ALIASES: Record<string, string> = {
grok: "xai",
mistral: "mistralai",
moonshot: "moonshotai",
};
const BASE_MODEL_ALIASES: Record<string, string> = {
"glm-5-2": "zhipuai/glm-5.2",
"grok-4-6": "xai/grok-4.6",
};
const Pricing = z.object({
@@ -27,6 +35,17 @@ const Pricing = z.object({
input_cache_write: z.string().optional(),
});
const ReasoningEffortOrder = new Map([
"none",
"minimal",
"low",
"medium",
"high",
"xhigh",
"max",
"default",
].map((effort, index) => [effort, index]));
export const LLMGatewayModel = z.object({
id: z.string(),
name: z.string(),
@@ -36,8 +55,22 @@ export const LLMGatewayModel = z.object({
input_modalities: z.array(z.string()),
output_modalities: z.array(z.string()),
}),
providers: z.array(
z.object({
providerId: z.string().optional(),
vision: z.boolean().optional(),
tools: z.boolean().optional(),
reasoning: z.boolean().optional(),
reasoning_efforts: z.array(
z.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max", "default"]),
).optional(),
}).passthrough(),
).optional(),
pricing: Pricing,
context_length: z.number(),
// Absent for pseudo-models (custom/auto) and some non-text mappings; text
// models always report it.
context_length: z.number().optional(),
max_output: z.number().optional(),
supported_parameters: z.array(z.string()),
structured_outputs: z.boolean().optional(),
}).passthrough();
@@ -48,31 +81,117 @@ export const LLMGatewayResponse = z.object({
export type LLMGatewayModel = z.infer<typeof LLMGatewayModel>;
async function fetchLLMGatewayModels(url: string) {
const headers = process.env.LLMGATEWAY_API_KEY
? { Authorization: `Bearer ${process.env.LLMGATEWAY_API_KEY}` }
: undefined;
const response = await fetch(url, { headers });
if (!response.ok) {
throw new Error(`LLM Gateway request failed: ${response.status} ${response.statusText}`);
}
return response.json();
}
function textOnly(model: LLMGatewayModel) {
const output = model.architecture.output_modalities;
return output.length === 1 && output[0] === "text";
}
// The DevPass (LLM Gateway) provider: the gateway's aggregated catalog of root
// model IDs, auto-routed across upstream providers.
export const llmgateway = {
id: "llmgateway",
name: "LLM Gateway",
name: "DevPass (LLM Gateway)",
modelsDir: "providers/llmgateway/models",
async fetchModels() {
const headers = process.env.LLMGATEWAY_API_KEY
? { Authorization: `Bearer ${process.env.LLMGATEWAY_API_KEY}` }
: undefined;
const response = await fetch(API_ENDPOINT, { headers });
if (!response.ok) {
throw new Error(`LLM Gateway request failed: ${response.status} ${response.statusText}`);
}
return response.json();
return fetchLLMGatewayModels(API_ENDPOINT);
},
parseModels(raw) {
return LLMGatewayResponse.parse(raw).data.filter((model) => {
const output = model.architecture.output_modalities;
return output.length === 1 && output[0] === "text";
});
const data = LLMGatewayResponse.parse(raw).data.filter(textOnly);
// An empty catalog is an upstream fault; syncing it would delete every
// model file, so fail loudly instead.
if (data.length === 0) {
throw new Error("LLM Gateway returned no text models");
}
return data;
},
translateModel(model, context) {
return {
id: model.id,
model: buildLLMGatewayModel(model, context.existing(model.id)),
};
const translated = buildLLMGatewayModel(model, context.existing(model.id));
if (translated === undefined) {
return undefined;
}
return { id: model.id, model: translated };
},
sourceID(model) {
return model.id;
},
} satisfies SyncProvider<LLMGatewayModel>;
// Every toggle reasoning control requires a leading wire-path comment, and the
// sync runner only carries over headers that already exist on disk. Files this
// sync writes with a toggle get the gateway-wide default; a hand-written
// header on the existing file always wins.
const TOGGLE_HEADER = `# Toggle: $.reasoning_effort = "none" disables thinking; any other accepted
# value (or omitting the field) leaves it on. The gateway maps it to the
# deployment's thinking switch.
# https://docs.llmgateway.io/features/reasoning
`;
function toggleHeader(model: SyncedModel) {
return model.reasoning_options?.some((option) => option.type === "toggle")
? TOGGLE_HEADER
: undefined;
}
// The LLM Gateway provider: one entry per upstream provider mapping, addressed
// the way the gateway accepts provider-pinned requests (`provider/model-id`).
export const llmgatewayProviders = {
id: "llmgateway-providers",
name: "LLM Gateway",
modelsDir: "providers/llmgateway-providers/models",
async fetchModels() {
return fetchLLMGatewayModels(`${API_ENDPOINT}?mapped=true`);
},
parseModels(raw) {
const data = LLMGatewayResponse.parse(raw).data;
// A deployment without the mapped view ignores the query param and returns
// aggregated root IDs (no provider prefix); syncing those here would wipe
// the provider-pinned catalog, so refuse to proceed. An empty response (or
// one left empty after filtering) would silently do the same via the
// delete-missing pass, so it is equally fatal.
if (data.length === 0 || !data.every((model) => model.id.includes("/"))) {
throw new Error("LLM Gateway mapped view unavailable: response is empty or contains unprefixed model ids");
}
// llmgateway/custom is the BYO-model placeholder and llmgateway/auto the
// auto-router; pinning either to a provider is meaningless in this catalog
// (the aggregated llmgateway provider carries `auto`).
const mapped = data.filter((model) => !model.id.startsWith("llmgateway/") && textOnly(model));
if (mapped.length === 0) {
throw new Error("LLM Gateway mapped view returned no text models");
}
// Every mapped entry is one specific provider deployment whose single
// providers[] mapping drives capabilities and reasoning controls. A kept
// entry with zero or several mappings would make the builder silently fall
// back to noisy supported_parameters / sibling defaults, so fail loudly.
const malformed = mapped.filter((model) => model.providers?.length !== 1);
if (malformed.length > 0) {
throw new Error(
`LLM Gateway mapped view returned entries without exactly one provider mapping: ${
malformed.map((model) => model.id).join(", ")
}`,
);
}
return mapped;
},
translateModel(model, context) {
const translated = buildLLMGatewayMappedModel(model, context.existing(model.id));
if (translated === undefined) {
return undefined;
}
return { id: model.id, model: translated, header: toggleHeader(translated) };
},
sourceID(model) {
return model.id;
},
} satisfies SyncProvider<LLMGatewayModel>;
@@ -106,12 +225,75 @@ function modalities(values: string[], fallback: Modality[]): Modality[] {
return [...new Set(result.length > 0 ? result : fallback)];
}
function resolveLLMGatewayBaseModel(model: LLMGatewayModel) {
const alias = BASE_MODEL_ALIASES[model.id];
// Modalities as served by a specific deployment: a mapping without vision must
// not carry image/pdf input, regardless of what the model-level architecture
// claims — attachment=false with image input is contradictory.
function deploymentModalities(model: LLMGatewayModel, vision: boolean | undefined) {
const base = defaultModalities(model);
if (vision !== false) {
return base;
}
const input = base.input.filter((value) => value !== "image" && value !== "pdf");
return {
input: input.length > 0 ? input : (["text"] satisfies Modality[]),
output: base.output,
};
}
const MODELS_DIR = path.join(import.meta.dirname, "..", "..", "..", "..", "..", "models");
const AGGREGATED_MODELS_DIR = path.join(import.meta.dirname, "..", "..", "..", "..", "..", "providers", "llmgateway", "models");
const canonicalOutputLimitByID = new Map<string, number | undefined>();
interface SiblingCuration {
reasoning_options?: SyncedFullModel["reasoning_options"];
interleaved?: SyncedFullModel["interleaved"];
cost_tiers?: NonNullable<SyncedFullModel["cost"]>["tiers"];
}
const siblingCurationByID = new Map<string, SiblingCuration>();
// The aggregated llmgateway catalog curates reasoning controls, the reasoning
// side-channel, and context pricing tiers for the same gateway surface; mapped
// deployments of the same root model reuse them when the deployment does not
// declare its own.
function siblingCuration(rootID: string): SiblingCuration {
let curation = siblingCurationByID.get(rootID);
if (curation === undefined) {
const filePath = path.join(AGGREGATED_MODELS_DIR, `${rootID}.toml`);
const authored = existsSync(filePath)
? Bun.TOML.parse(readFileSync(filePath, "utf8")) as SiblingCuration & {
cost?: { tiers?: NonNullable<SyncedFullModel["cost"]>["tiers"] };
}
: undefined;
curation = {
reasoning_options: authored?.reasoning_options?.length ? authored.reasoning_options : undefined,
interleaved: authored?.interleaved,
cost_tiers: authored?.cost?.tiers,
};
siblingCurationByID.set(rootID, curation);
}
return curation;
}
// Whether the canonical metadata declares limit.output; factored entries can
// only omit their own output override when the base has one to inherit.
function canonicalOutputLimit(modelID: string) {
if (!canonicalOutputLimitByID.has(modelID)) {
const filePath = path.join(MODELS_DIR, `${modelID}.toml`);
const metadata = existsSync(filePath)
? Bun.TOML.parse(readFileSync(filePath, "utf8")) as { limit?: { output?: number } }
: undefined;
canonicalOutputLimitByID.set(modelID, metadata?.limit?.output);
}
return canonicalOutputLimitByID.get(modelID);
}
function resolveLLMGatewayBaseModel(model: LLMGatewayModel, modelID = model.id) {
const alias = BASE_MODEL_ALIASES[modelID];
if (alias !== undefined) return alias;
if (model.family === undefined) return undefined;
const prefix = CANONICAL_FAMILY_ALIASES[model.family] ?? model.family;
return resolveCanonicalBaseModel(`${prefix}/${model.id}`);
return resolveModelMetadataBaseModel(`${prefix}/${modelID}`);
}
function inferFamily(model: LLMGatewayModel, name: string) {
@@ -133,17 +315,23 @@ function inferFamily(model: LLMGatewayModel, name: string) {
export function buildLLMGatewayModel(
model: LLMGatewayModel,
existing: ExistingModel | undefined,
): SyncedModel {
): SyncedModel | undefined {
const prompt = price(model.pricing.prompt);
const completion = price(model.pricing.completion);
const reasoning = model.supported_parameters.includes("reasoning")
|| model.supported_parameters.includes("include_reasoning");
const context = model.context_length > 0
? model.context_length
: existing?.limit?.context ?? model.context_length;
const reasoningOptions = llmGatewayReasoningOptions(model, existing);
const reported = model.context_length ?? 0;
// A missing/zero context must never be authored as limit.context = 0:
// factored entries leave it unset and inherit the base, and unfactored
// creates are skipped entirely. An authored 0 on the existing file is
// equally unusable and must not be re-stamped.
const servedContext = reported > 0 ? reported : undefined;
const context = servedContext ?? (existing?.limit?.context || undefined);
// The gateway is authoritative for the volatile, gateway-specific data — cost
// and served limits. Its supported_parameters / modalities are too noisy to
// The gateway is authoritative for the volatile, gateway-specific data — cost,
// served limits, and explicitly advertised reasoning efforts. Its
// supported_parameters / modalities are too noisy to
// drive capability fields (it omits "tools" for flagship models yet lists
// "temperature" for ones the catalog deliberately marks temperature=false),
// so those stay curated: preserved from the existing entry (which, for a
@@ -158,15 +346,24 @@ export function buildLLMGatewayModel(
tiers: existing?.cost?.tiers,
}
: existing?.cost;
const limit = {
context,
input: existing?.limit?.input,
output: existing?.limit?.output ?? context,
};
// Authored limits carry only known-positive values — never the zero/absent
// `reported` fallback.
const limit = context !== undefined
? {
context,
input: existing?.limit?.input,
output: (existing?.limit?.output || undefined) ?? context,
}
: undefined;
// Existing factored model: refresh cost + limit, keep every authored override
// as-is (undefined fields keep inheriting the base model).
if (existing?.base_model !== undefined) {
const factoredLimit = {
context,
input: existing.limit?.input,
output: existing.limit?.output ?? context,
};
return factorBaseModel(
existing.base_model,
{
@@ -179,10 +376,11 @@ export function buildLLMGatewayModel(
tool_call: existing.tool_call,
structured_output: existing.structured_output,
open_weights: existing.open_weights,
limit,
limit: factoredLimit,
modalities: existing.modalities,
}),
reasoning: existing.reasoning,
reasoning_options: reasoningOptions,
temperature: existing.temperature,
tool_call: existing.tool_call,
structured_output: existing.structured_output,
@@ -190,16 +388,22 @@ export function buildLLMGatewayModel(
interleaved: existing.interleaved,
knowledge: existing.knowledge,
modalities: existing.modalities,
limit,
limit: factoredLimit,
cost,
},
limit,
factoredLimit,
existing.base_model_omit,
);
}
// Existing full model: refresh cost + limit, preserve curated metadata.
if (existing !== undefined) {
// With no usable context from the API or the file there is nothing valid
// to author, and skipping would hand the file to the delete-missing pass —
// fail loudly rather than write limit.context = 0.
if (limit === undefined) {
throw new Error(`LLM Gateway entry ${model.id} has no usable context to author`);
}
return {
name: existing.name ?? model.name,
description: existing.description ?? describeModel({
@@ -218,6 +422,7 @@ export function buildLLMGatewayModel(
last_updated: existing.last_updated ?? dateFromTimestamp(model.created),
attachment: existing.attachment ?? false,
reasoning: existing.reasoning ?? false,
reasoning_options: reasoningOptions,
temperature: existing.temperature ?? false,
tool_call: existing.tool_call ?? false,
structured_output: existing.structured_output,
@@ -240,11 +445,20 @@ export function buildLLMGatewayModel(
const canonical = resolveLLMGatewayBaseModel(model);
if (canonical !== undefined) {
const factoredLimit = { context, input: undefined, output: undefined };
return factorBaseModel(canonical, { limit: factoredLimit, cost }, factoredLimit);
return factorBaseModel(canonical, {
reasoning_options: reasoningOptions,
limit: factoredLimit,
cost,
}, factoredLimit);
}
// Brand-new model: best-effort translation from the gateway. Capability and
// modality data are unreliable here and should be hand-reviewed.
// modality data are unreliable here and should be hand-reviewed. Without a
// positive served context there is nothing usable to author, so skip.
if (servedContext === undefined) {
return undefined;
}
const createdLimit = limit ?? { context: servedContext, input: undefined, output: servedContext };
const { input, output } = defaultModalities(model);
return {
name: model.name,
@@ -257,7 +471,7 @@ export function buildLLMGatewayModel(
|| model.supported_parameters.includes("tool_choice"),
structured_output: model.structured_outputs ?? false,
open_weights: false,
limit,
limit: createdLimit,
modalities: { input, output },
}),
family: inferFamily(model, model.name),
@@ -265,17 +479,293 @@ export function buildLLMGatewayModel(
last_updated: dateFromTimestamp(model.created),
attachment: input.some((value) => value !== "text"),
reasoning,
reasoning_options: reasoningOptions,
temperature: model.supported_parameters.includes("temperature"),
tool_call: model.supported_parameters.includes("tools")
|| model.supported_parameters.includes("tool_choice"),
structured_output: model.structured_outputs ?? false,
open_weights: false,
cost,
limit,
limit: createdLimit,
modalities: { input, output },
} satisfies SyncedFullModel;
}
export function buildLLMGatewayMappedModel(
model: LLMGatewayModel,
existing: ExistingModel | undefined,
): SyncedModel | undefined {
// Mapped entries carry exactly one provider mapping; its capability flags
// describe that specific deployment, unlike the aggregated view where
// supported_parameters are too noisy to trust.
const mapping = model.providers?.[0];
const rootID = model.id.split("/").slice(1).join("/");
const prompt = price(model.pricing.prompt);
const completion = price(model.pricing.completion);
// The mapping's flag stays authoritative on resyncs too, so the written
// reasoning boolean and the reasoning_options derived from it always move
// together; prior curation only fills in when the mapping is silent, then
// the noisy supported_parameters signal as a last resort.
const reasoning = mapping?.reasoning
?? existing?.reasoning
?? (model.supported_parameters.includes("reasoning")
|| model.supported_parameters.includes("include_reasoning"));
// The exact reasoning_effort values this deployment accepts. A deployment
// whose only accepted effort is "none" exposes a plain on/off switch (the
// gateway honours it through the thinking toggle), not effort tiers.
const deploymentOptions = mapping?.reasoning_efforts?.length
? mapping.reasoning_efforts.length === 1 && mapping.reasoning_efforts[0] === "none"
? [{ type: "toggle" as const }]
: [{ type: "effort" as const, values: mapping.reasoning_efforts }]
: undefined;
// Deployment-declared efforts own the effort/toggle surface; curation falls
// back from non-empty options on this file to the aggregated llmgateway
// catalog's controls for the same root model on the same gateway surface.
// Curated non-effort controls (e.g. budget_tokens for $.reasoning.max_tokens,
// which this host serves regardless of the effort list) survive alongside
// deployment efforts instead of being wiped by them. A curated [] counts as
// unknown so a bad first stamp is not sticky. Non-reasoning deployments
// carry none; the same applies to the interleaved reasoning side-channel.
const sibling = siblingCuration(rootID);
const curatedOptions = (existing?.reasoning_options?.length ? existing.reasoning_options : undefined)
?? sibling.reasoning_options;
const reasoningOptions = reasoning
? deploymentOptions !== undefined
? [
...(curatedOptions ?? []).filter((option) => option.type !== "effort" && option.type !== "toggle"),
...deploymentOptions,
]
: curatedOptions
: undefined;
const interleaved = reasoning
? existing?.interleaved ?? sibling.interleaved
: undefined;
const reported = model.context_length ?? 0;
// Same zero-context rule as the aggregated builder: never author 0, inherit
// on factored entries, skip unfactored creates. An authored 0 on the
// existing file is equally unusable.
const servedContext = reported > 0 ? reported : undefined;
const context = servedContext ?? (existing?.limit?.context || undefined);
const cost = prompt !== undefined && completion !== undefined
? {
input: prompt,
output: completion,
reasoning: reasoning ? nonZeroPrice(model.pricing.internal_reasoning) ?? existing?.cost?.reasoning : existing?.cost?.reasoning,
cache_read: nonZeroPrice(model.pricing.input_cache_read) ?? existing?.cost?.cache_read,
cache_write: nonZeroPrice(model.pricing.input_cache_write) ?? existing?.cost?.cache_write,
// The gateway API does not expose context pricing tiers, so authored
// tiers stick and new files seed from the aggregated sibling's curated
// tiers rather than silently under-stating long-context pricing.
tiers: existing?.cost?.tiers ?? sibling.cost_tiers,
}
: existing?.cost;
// The gateway's max_output is the deployment's real served limit, so it wins
// over inherited/authored values, unlike the aggregated view.
const servedOutput = (model.max_output || undefined) ?? (existing?.limit?.output || undefined);
// Authored limits carry only known-positive values — never the zero/absent
// `reported` fallback.
const limit = context !== undefined
? {
context,
input: existing?.limit?.input,
output: servedOutput ?? context,
}
: undefined;
// Existing factored model: refresh cost + limit, keep every authored override
// as-is. Unlike the aggregated provider, the name override must be carried
// forward: mapped names disambiguate deployments of the same model (e.g.
// "GPT-5.5 (Azure)" vs "GPT-5.5 (OpenAI)") and must not collapse back to the
// base metadata name.
if (existing?.base_model !== undefined) {
// Mirror the brand-new factored path: without a served or authored output,
// keep inheriting the base's output rather than stamping context over it.
const factoredLimit = {
context,
input: existing.limit?.input,
output: servedOutput ?? (canonicalOutputLimit(existing.base_model) !== undefined ? undefined : context),
};
// Deployment capability flags keep their create-path authority on
// resyncs: a mapping that gains or loses reasoning/vision/tools/structured
// outputs realigns the written flags together with the reasoning_options
// computed from them, instead of freezing stale curation forever.
return factorBaseModel(
existing.base_model,
{
name: existing.name ?? model.name,
attachment: mapping?.vision ?? existing.attachment,
// No describeModel fallback: synthesizing a description here would
// stamp a sticky generic override on every name-pinned factored entry;
// leaving it unset keeps inheriting the lab text from the base.
description: existing.description,
reasoning: mapping?.reasoning ?? existing.reasoning,
reasoning_options: reasoningOptions,
temperature: existing.temperature,
tool_call: mapping?.tools ?? existing.tool_call,
structured_output: model.structured_outputs ?? existing.structured_output,
status: existing.status,
interleaved,
knowledge: existing.knowledge,
// Vision realigns modalities in both directions: false strips
// image/pdf, true clears any stale stripped override so the base's
// richer inputs inherit again; only a silent mapping keeps curation.
modalities: mapping?.vision === undefined
? existing.modalities
: mapping.vision
? undefined
: deploymentModalities(model, false),
limit: factoredLimit,
cost,
},
factoredLimit,
existing.base_model_omit,
);
}
// Existing full model: refresh cost + limit, preserve curated metadata.
// Capability flags follow the same rule as the factored path above: the
// deployment mapping wins, curation fills the gaps.
if (existing !== undefined) {
// With no usable context from the API or the file there is nothing valid
// to author, and skipping would hand the file to the delete-missing pass —
// fail loudly rather than write limit.context = 0.
if (limit === undefined) {
throw new Error(`LLM Gateway mapped entry ${model.id} has no usable context to author`);
}
const resolved = {
attachment: mapping?.vision ?? existing.attachment ?? false,
tool_call: mapping?.tools ?? existing.tool_call ?? false,
structured_output: model.structured_outputs ?? existing.structured_output,
// Same bidirectional vision rule as the factored path; with no base to
// inherit from, a declared vision recomputes from the served
// architecture instead of clearing.
modalities: mapping?.vision === undefined
? existing.modalities ?? deploymentModalities(model, undefined)
: deploymentModalities(model, mapping.vision),
};
return {
name: existing.name ?? model.name,
description: existing.description ?? describeModel({
id: model.id,
name: existing.name ?? model.name,
family: existing.family,
reasoning,
tool_call: resolved.tool_call,
structured_output: resolved.structured_output,
open_weights: existing.open_weights,
limit,
modalities: resolved.modalities,
}),
family: existing.family,
release_date: existing.release_date ?? dateFromTimestamp(model.created),
last_updated: existing.last_updated ?? dateFromTimestamp(model.created),
attachment: resolved.attachment,
reasoning,
reasoning_options: reasoningOptions,
temperature: existing.temperature ?? false,
tool_call: resolved.tool_call,
structured_output: resolved.structured_output,
knowledge: existing.knowledge,
open_weights: existing.open_weights ?? false,
status: existing.status,
interleaved,
cost,
limit,
modalities: resolved.modalities,
} satisfies SyncedFullModel;
}
// Brand-new model with a reviewed metadata entry: factor against the
// canonical base. The mapped ID is `serving-provider/model-id` and the
// serving provider is unrelated to the originating lab, so resolve the base
// from the root model ID + family, and keep the disambiguating name. The
// mapping's own capability flags describe this specific deployment, so they
// go in as overrides (factorBaseModel drops the ones equal to the base).
const canonical = resolveLLMGatewayBaseModel(model, rootID);
if (canonical !== undefined) {
const factoredLimit = {
context,
input: undefined,
// Without a served limit, inherit the base's output; only fall back to
// context when the base declares none (output is required downstream).
output: model.max_output ?? (canonicalOutputLimit(canonical) !== undefined ? undefined : context),
};
return factorBaseModel(canonical, {
name: model.name,
attachment: mapping?.vision,
reasoning: mapping?.reasoning,
reasoning_options: reasoningOptions,
interleaved,
tool_call: mapping?.tools,
structured_output: model.structured_outputs,
// A deployment without vision must not inherit image/pdf inputs from
// the base — attachment=false with image input is contradictory.
modalities: mapping?.vision === false ? deploymentModalities(model, false) : undefined,
limit: factoredLimit,
cost,
}, factoredLimit);
}
// Brand-new model without metadata: best-effort translation. The mapping's
// own capability flags are reliable here; modalities mirror the mapping too.
// Without a positive served context there is nothing usable to author.
if (servedContext === undefined) {
return undefined;
}
const createdLimit = limit ?? { context: servedContext, input: undefined, output: servedOutput ?? servedContext };
const { input, output } = deploymentModalities(model, mapping?.vision);
return {
name: model.name,
description: describeModel({
id: model.id,
name: model.name,
family: inferFamily(model, model.name),
reasoning,
tool_call: mapping?.tools ?? false,
structured_output: model.structured_outputs ?? false,
open_weights: false,
limit: createdLimit,
modalities: { input, output },
}),
family: inferFamily(model, model.name),
release_date: dateFromTimestamp(model.created),
last_updated: dateFromTimestamp(model.created),
attachment: mapping?.vision ?? input.some((value) => value !== "text"),
reasoning,
reasoning_options: reasoningOptions,
interleaved,
temperature: model.supported_parameters.includes("temperature"),
tool_call: mapping?.tools ?? false,
structured_output: model.structured_outputs ?? false,
open_weights: false,
cost,
limit: createdLimit,
modalities: { input, output },
} satisfies SyncedFullModel;
}
function llmGatewayReasoningOptions(
model: LLMGatewayModel,
existing: ExistingModel | undefined,
): SyncedFullModel["reasoning_options"] {
const advertised = new Set((model.providers ?? []).flatMap((provider) => provider.reasoning_efforts ?? []));
if (advertised.size === 0) return undefined;
const efforts = [...advertised].sort((a, b) => {
const order = (ReasoningEffortOrder.get(a) ?? Number.MAX_SAFE_INTEGER)
- (ReasoningEffortOrder.get(b) ?? Number.MAX_SAFE_INTEGER);
return order || a.localeCompare(b);
});
const preserved = existing?.reasoning_options?.filter((option) =>
option.type !== "effort" && !(option.type === "toggle" && advertised.has("none"))
) ?? [];
return [
...preserved,
ReasoningOption.parse({ type: "effort", values: efforts }),
];
}
function defaultModalities(model: LLMGatewayModel) {
return {
input: modalities(model.architecture.input_modalities, ["text"]),
@@ -13,6 +13,7 @@ const VendorReasoning = z.object({
disable_supported: z.boolean().optional(),
default_enabled: z.boolean().optional(),
controls: z.array(z.string()).optional(),
effort_values: z.array(z.string()).optional(),
output_style: z.string().nullable().optional(),
}).passthrough();
@@ -161,6 +162,28 @@ export const mergeGateway = {
},
} satisfies SyncProvider<MergeGatewayModel>;
export function mergeGatewayReasoningOptions(
reasoning: MergeGatewayVendor["capabilities"]["reasoning"],
): NonNullable<SyncedFullModel["reasoning_options"]> | undefined {
if (reasoning == null) return undefined;
const options: NonNullable<SyncedFullModel["reasoning_options"]> = [];
if (reasoning.disable_supported === true) {
options.push({ type: "toggle" as const });
}
const controls = (reasoning.controls ?? []).map((control) => control.toLowerCase());
const effortValues = reasoning.effort_values ?? [];
if (
(controls.includes("reasoning.effort") || controls.includes("reasoning_effort"))
&& effortValues.length > 0
) {
options.push({ type: "effort" as const, values: [...effortValues] });
}
return options;
}
export function selectMergeGatewayVendor(model: MergeGatewayModel) {
const canonical = model.vendors[model.provider];
if (canonical?.availability_status === "available") {
@@ -234,8 +257,8 @@ export function buildMergeGatewayModel(
const reasoning = routeConfirmsReasoning ? true : existing?.reasoning;
const existingReasoningOptions = existing?.reasoning_options ?? [];
const reasoningOptions = reasoning === true && existingReasoningOptions.length === 0
&& selected.info.capabilities.reasoning?.disable_supported === true
? [{ type: "toggle" as const }]
? mergeGatewayReasoningOptions(selected.info.capabilities.reasoning)
?? existingReasoningOptions
: reasoning === true
? existingReasoningOptions
: existing?.reasoning_options;
@@ -96,6 +96,7 @@ const BASE_MODEL_ALIASES: Record<string, string | undefined> = {
"claude-opus-4": "anthropic/claude-opus-4-0",
"claude-sonnet-4": "anthropic/claude-sonnet-4-0",
"cohere/north-mini-code": "cohere/north-mini-code-1-0",
"doubao-seed-2-0-code-preview-260215": "bytedance-seed/seed-2.0-code",
};
const NANO_GPT_VARIANT_SUFFIX = /(?::(?:thinking|none|minimal|low|medium|high|xhigh|max|\d+)|-thinking)$/i;
+4 -1
View File
@@ -55,8 +55,11 @@ export const ofox = {
name: "Ofox",
modelsDir: "providers/ofox/models",
skipCreates: true,
trackMissingModels: false,
trackMissingModels: true,
deleteMissing: false,
sourceID(model) {
return model.mode === "chat" ? model.id : undefined;
},
missingNotice(paths) {
return paths.map(
(file) => `Ofox catalog no longer lists ${file}; review for manual deprecation or removal.`,

Some files were not shown because too many files have changed in this diff Show More