From fe0af4d5304dd69cb819edb5a8b45b63102d72c4 Mon Sep 17 00:00:00 2001 From: Scott Werner Date: Thu, 28 May 2026 15:30:12 -0400 Subject: [PATCH] feat(catalog): flip openrouter to the dedicated adapter + per-vendor families MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Activates the new adapter wired up in the previous commit: - adapter = "openrouter" (was "openai_compatible") - family per model rewritten from the placeholder "openrouter" to the vendor-line convention used elsewhere in the catalog: claude-4 (×3), gpt-5 (×2), gemini-3 (×2), mimo-v2, minimax-m2, deepseek-v4 (×2), kimi-k2, qwen3 (×2), glm-4, nemotron-3, devstral. The per-vendor families let UIs group all Claude 4 entries across the direct Anthropic adapter and the OR-routed entries via the family field alone. None of the in-tree consumers (apps/fabro-web) branch on family == "openrouter". Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/catalog/providers/openrouter.toml | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/crates/fabro-model/src/catalog/providers/openrouter.toml b/lib/crates/fabro-model/src/catalog/providers/openrouter.toml index dc65760ed..673ed1663 100644 --- a/lib/crates/fabro-model/src/catalog/providers/openrouter.toml +++ b/lib/crates/fabro-model/src/catalog/providers/openrouter.toml @@ -1,6 +1,6 @@ [providers.openrouter] display_name = "OpenRouter" -adapter = "openai_compatible" +adapter = "openrouter" api_key_url = "https://openrouter.ai/keys" base_url = "https://openrouter.ai/api/v1" priority = 25 @@ -32,7 +32,7 @@ credentials = ["env:OPENROUTER_API_KEY", "vault:OPENROUTER_API_KEY"] provider = "openrouter" api_id = "anthropic/claude-opus-4.7" display_name = "Claude Opus 4.7 (via OpenRouter)" -family = "openrouter" +family = "claude-4" [models."anthropic/claude-opus-4-7".limits] context_window = 1000000 @@ -53,7 +53,7 @@ cache_input_cost_per_mtok = 0.5 provider = "openrouter" api_id = "anthropic/claude-sonnet-4.6" display_name = "Claude Sonnet 4.6 (via OpenRouter)" -family = "openrouter" +family = "claude-4" default = true [models."anthropic/claude-sonnet-4-6".limits] @@ -75,7 +75,7 @@ cache_input_cost_per_mtok = 0.3 provider = "openrouter" api_id = "anthropic/claude-haiku-4.5" display_name = "Claude Haiku 4.5 (via OpenRouter)" -family = "openrouter" +family = "claude-4" small_default = true [models."anthropic/claude-haiku-4-5".limits] @@ -99,7 +99,7 @@ cache_input_cost_per_mtok = 0.1 provider = "openrouter" api_id = "openai/gpt-5.4" display_name = "GPT-5.4 (via OpenRouter)" -family = "openrouter" +family = "gpt-5" [models."openai/gpt-5.4".limits] context_window = 1050000 @@ -118,7 +118,7 @@ output_cost_per_mtok = 15.0 provider = "openrouter" api_id = "openai/gpt-5.5" display_name = "GPT-5.5 (via OpenRouter)" -family = "openrouter" +family = "gpt-5" [models."openai/gpt-5.5".limits] context_window = 1050000 @@ -139,7 +139,7 @@ output_cost_per_mtok = 30.0 provider = "openrouter" api_id = "google/gemini-3.1-pro-preview" display_name = "Gemini 3.1 Pro Preview (via OpenRouter)" -family = "openrouter" +family = "gemini-3" [models."google/gemini-3.1-pro-preview".limits] context_window = 1048576 @@ -158,7 +158,7 @@ output_cost_per_mtok = 12.0 provider = "openrouter" api_id = "google/gemini-3.5-flash" display_name = "Gemini 3.5 Flash (via OpenRouter)" -family = "openrouter" +family = "gemini-3" [models."google/gemini-3.5-flash".limits] context_window = 1048576 @@ -179,7 +179,7 @@ output_cost_per_mtok = 9.0 provider = "openrouter" api_id = "xiaomi/mimo-v2.5-pro" display_name = "Xiaomi MiMo v2.5 Pro" -family = "openrouter" +family = "mimo-v2" [models."xiaomi/mimo-v2.5-pro".limits] context_window = 1050000 @@ -198,7 +198,7 @@ output_cost_per_mtok = 0.87 provider = "openrouter" api_id = "minimax/minimax-m2.7" display_name = "MiniMax M2.7" -family = "openrouter" +family = "minimax-m2" [models."minimax/minimax-m2.7".limits] context_window = 200000 @@ -217,7 +217,7 @@ output_cost_per_mtok = 1.20 provider = "openrouter" api_id = "deepseek/deepseek-v4-pro" display_name = "DeepSeek V4 Pro" -family = "openrouter" +family = "deepseek-v4" [models."deepseek/deepseek-v4-pro".limits] context_window = 1050000 @@ -236,7 +236,7 @@ output_cost_per_mtok = 0.87 provider = "openrouter" api_id = "deepseek/deepseek-v4-flash" display_name = "DeepSeek V4 Flash" -family = "openrouter" +family = "deepseek-v4" [models."deepseek/deepseek-v4-flash".limits] context_window = 1050000 @@ -255,7 +255,7 @@ output_cost_per_mtok = 0.20 provider = "openrouter" api_id = "moonshotai/kimi-k2.6" display_name = "Kimi K2.6" -family = "openrouter" +family = "kimi-k2" [models."moonshotai/kimi-k2.6".limits] context_window = 262144 @@ -274,7 +274,7 @@ output_cost_per_mtok = 3.49 provider = "openrouter" api_id = "qwen/qwen3-coder" display_name = "Qwen3 Coder" -family = "openrouter" +family = "qwen3" [models."qwen/qwen3-coder".limits] context_window = 1050000 @@ -293,7 +293,7 @@ output_cost_per_mtok = 1.80 provider = "openrouter" api_id = "qwen/qwen3.6-flash" display_name = "Qwen3.6 Flash" -family = "openrouter" +family = "qwen3" [models."qwen/qwen3.6-flash".limits] context_window = 1000000 @@ -312,7 +312,7 @@ output_cost_per_mtok = 1.125 provider = "openrouter" api_id = "z-ai/glm-4.6" display_name = "GLM 4.6" -family = "openrouter" +family = "glm-4" [models."z-ai/glm-4.6".limits] context_window = 203000 @@ -331,7 +331,7 @@ output_cost_per_mtok = 1.74 provider = "openrouter" api_id = "nvidia/nemotron-3-super-120b-a12b" display_name = "NVIDIA Nemotron 3 Super 120B" -family = "openrouter" +family = "nemotron-3" [models."nvidia/nemotron-3-super-120b-a12b".limits] context_window = 1000000 @@ -350,7 +350,7 @@ output_cost_per_mtok = 0.45 provider = "openrouter" api_id = "mistralai/devstral-2512" display_name = "Devstral 2512" -family = "openrouter" +family = "devstral" [models."mistralai/devstral-2512".limits] context_window = 262144