{"repo": "burin-labs/harn", "files": {"docs/provider-support.json": {"594be4ccb6176b0eed871d2967ab47341696a558": {"t": 1785674606.86832, "n": 80491, "h": "85fb6dbaaa4fad99", "c": "{\n \"schema_version\": 1,\n \"generated_by\": \"harn provider catalog support\",\n \"sources\": {\n \"provider_catalog_schema_version\": 7,\n \"capability_matrix\": \"crates/harn-vm/src/llm/capabilities.toml\",\n \"notes\": \"crates/harn-cli/data/provider_support_notes.toml\",\n \"empirical\": []\n },\n \"providers\": [\n {\n \"id\": \"anthropic\",\n \"display_name\": \"Anthropic\",\n \"catalog_provider\": \"anthropic\",\n \"endpoint_style\": \"Anthropic Messages API\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ANTHROPIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"haiku\",\n \"provider\": \"anthropic\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"display_name\": \"Claude Haiku 4.5\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"anthropic\\\"\",\n \"model = \\\"haiku\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"tool_use\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"speed\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.0,\n \"status\": \"research_preview\",\n \"latency\": \"higher output-token throughput than standard Claude serving\",\n \"reliability\": \"research preview, account-manager gated\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Native tools, prompt caching, file upload, and XML-oriented scaffolding are first-class in Harn capability data.\",\n \"Claude 4.7 rows use adaptive thinking; older Claude 4 rows use explicit thinking controls where supported.\"\n ],\n \"caveats\": [\n \"Strict JSON output is modeled as tool-use or XML-tagged output rather than OpenAI-style response_json_schema.\"\n ],\n \"mcp_notes\": [\n \"No provider-specific MCP connector is required; Harn exposes MCP tools through the runtime tool registry.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"atlas\",\n \"display_name\": \"Atlas\",\n \"catalog_provider\": \"atlas\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ATLAS_API_KEY\",\n \"ATLASCLOUD_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"atlas\",\n \"provider\": \"atlas\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"atlas\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"azure_openai\",\n \"display_name\": \"Azure Openai\",\n \"catalog_provider\": \"azure_openai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_AD_TOKEN\",\n \"AZURE_OPENAI_BEARER_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"azure_openai:gpt-*\",\n \"provider\": \"azure_openai\",\n \"model\": \"gpt-*\",\n \"display_name\": null,\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"azure_openai\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"baseten\",\n \"display_name\": \"Baseten\",\n \"catalog_provider\": \"baseten\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"BASETEN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"baseten:baseten/openai/gpt-oss-120b\",\n \"provider\": \"baseten\",\n \"model\": \"baseten/openai/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Baseten)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"baseten\\\"\",\n \"model = \\\"baseten/openai/gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"bedrock\",\n \"display_name\": \"Bedrock\",\n \"catalog_provider\": \"bedrock\",\n \"endpoint_style\": \"AWS Bedrock Converse\",\n \"classification\": \"hosted\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"bedrock:anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"provider\": \"bedrock\",\n \"model\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"display_name\": \"Claude Sonnet 4.5 (Amazon Bedrock)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"bedrock\\\"\",\n \"model = \\\"anthropic.claude-sonnet-4-5-20250929-v1:0\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cerebras\",\n \"display_name\": \"Cerebras\",\n \"catalog_provider\": \"cerebras\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CEREBRAS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cerebras/gpt-oss-120b\",\n \"provider\": \"cerebras\",\n \"model\": \"gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Cerebras)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cerebras\\\"\",\n \"model = \\\"gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs Cerebras public serverless rows separately from dedicated-endpoint weights so clients do not present unprovisioned enterprise endpoints as one-click routes.\",\n \"Use the slash-prefixed selector form (`cerebras/`) when a single string must carry both provider and model identity; Harn strips the prefix before sending the provider-native model id.\"\n ],\n \"caveats\": [\n \"Preview rows such as `zai-glm-4.7` may be discontinued by Cerebras on short notice; pin public production workloads to non-preview rows unless the caller opts into preview behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are normalized through Harn tool definitions before they become OpenAI-compatible Cerebras tool schemas.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cloudflare_ai_gateway\",\n \"display_name\": \"Cloudflare Ai Gateway\",\n \"catalog_provider\": \"cloudflare_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CLOUDFLARE_API_TOKEN\",\n \"CLOUDFLARE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cloudflare_ai_gateway\",\n \"provider\": \"cloudflare_ai_gateway\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"cloudflare_ai_gateway\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cohere\",\n \"display_name\": \"Cohere\",\n \"catalog_provider\": \"cohere\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"COHERE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cohere:command-a-plus-05-2026\",\n \"provider\": \"cohere\",\n \"model\": \"command-a-plus-05-2026\",\n \"display_name\": \"Command A+\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cohere\\\"\",\n \"model = \\\"command-a-plus-05-2026\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"dashscope\",\n \"display_name\": \"Dashscope\",\n \"catalog_provider\": \"dashscope\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DASHSCOPE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"dashscope:dashscope/qwen3-coder-next\",\n \"provider\": \"dashscope\",\n \"model\": \"dashscope/qwen3-coder-next\",\n \"display_name\": \"Qwen3 Coder Next (DashScope)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"dashscope\\\"\",\n \"model = \\\"dashscope/qwen3-coder-next\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepinfra\",\n \"display_name\": \"Deepinfra\",\n \"catalog_provider\": \"deepinfra\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPINFRA_API_KEY\",\n \"DEEPINFRA_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"deepinfra:deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"provider\": \"deepinfra\",\n \"model\": \"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"display_name\": \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepinfra\\\"\",\n \"model = \\\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepseek\",\n \"display_name\": \"Deepseek\",\n \"catalog_provider\": \"deepseek\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPSEEK_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"deepseek:deepseek-v4-flash\",\n \"provider\": \"deepseek\",\n \"model\": \"deepseek-v4-flash\",\n \"display_name\": \"DeepSeek V4 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepseek\\\"\",\n \"model = \\\"deepseek-v4-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"fireworks\",\n \"display_name\": \"Fireworks\",\n \"catalog_provider\": \"fireworks\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FIREWORKS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"fireworks:accounts/fireworks/models/gpt-oss-120b\",\n \"provider\": \"fireworks\",\n \"model\": \"accounts/fireworks/models/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Fireworks)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"fireworks\\\"\",\n \"model = \\\"accounts/fireworks/models/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"flexai\",\n \"display_name\": \"Flexai\",\n \"catalog_provider\": \"flexai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FLEXAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"flexai\",\n \"provider\": \"flexai\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"flexai\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"friendli\",\n \"display_name\": \"Friendli\",\n \"catalog_provider\": \"friendli\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FRIENDLI_API_KEY\",\n \"FRIENDLI_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"friendli\",\n \"provider\": \"friendli\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"friendli\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"gemini\",\n \"display_name\": \"Gemini API\",\n \"catalog_provider\": \"gemini\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GEMINI_API_KEY\",\n \"GOOGLE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"gemini:gemini-2.5-flash\",\n \"provider\": \"gemini\",\n \"model\": \"gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"gemini\\\"\",\n \"model = \\\"gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\",\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"variable synchronous latency for latency-tolerant workloads\",\n \"reliability\": \"best-effort availability; resource unavailability is possible\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\"\n },\n {\n \"id\": \"priority\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"priority\",\n \"discount_percent\": null,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"predictable low-latency serving for user-facing traffic\",\n \"reliability\": \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"GenerateContent responses expose downgrade via x-gemini-service-tier.\"\n }\n ],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn lowers native tools to Gemini function declarations and maps function responses back into the transcript.\",\n \"Gemini response usage maps cached-content token counts when the provider reports them.\"\n ],\n \"caveats\": [\n \"Harn does not create Gemini context-cache resources yet; cache accounting is therefore observational.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are regular Harn runtime tools before they become Gemini function declarations.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"github_models\",\n \"display_name\": \"Github Models\",\n \"catalog_provider\": \"github_models\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GITHUB_MODELS_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"github_models\",\n \"provider\": \"github_models\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"github_models\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"groq\",\n \"display_name\": \"Groq\",\n \"catalog_provider\": \"groq\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GROQ_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"groq:llama-3.1-8b-instant\",\n \"provider\": \"groq\",\n \"model\": \"llama-3.1-8b-instant\",\n \"display_name\": \"Llama 3.1 8B Instant (Groq)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"groq\\\"\",\n \"model = \\\"llama-3.1-8b-instant\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"huggingface\",\n \"display_name\": \"Hugging Face Inference Providers\",\n \"catalog_provider\": \"huggingface\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through the HF router\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HF_TOKEN\",\n \"HUGGINGFACE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"huggingface-qwen3-coder\",\n \"provider\": \"huggingface\",\n \"model\": \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"display_name\": \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"huggingface\\\"\",\n \"model = \\\"huggingface-qwen3-coder\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"The Hugging Face router uses the OpenAI-compatible chat completions API and supports tools and streaming for chat-completion models.\",\n \"Qwen3-Coder 480B A35B is the recommended HF router coding row because its model card publishes native 262K context, agentic coding focus, and a function-call-oriented format.\"\n ],\n \"caveats\": [\n \"Router availability, latency, and pricing depend on the selected upstream provider; run readiness and tool probes before promoting a route into production defaults.\",\n \"Do not infer reasoning controls from other Qwen rows: this Qwen3-Coder model card says the model is non-thinking.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hunyuan\",\n \"display_name\": \"Hunyuan\",\n \"catalog_provider\": \"hunyuan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HUNYUAN_API_KEY\",\n \"TENCENT_HUNYUAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hunyuan\",\n \"provider\": \"hunyuan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hunyuan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hyperbolic\",\n \"display_name\": \"Hyperbolic\",\n \"catalog_provider\": \"hyperbolic\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HYPERBOLIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hyperbolic\",\n \"provider\": \"hyperbolic\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hyperbolic\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"inception\",\n \"display_name\": \"Inception\",\n \"catalog_provider\": \"inception\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"INCEPTION_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"inception:mercury-2\",\n \"provider\": \"inception\",\n \"model\": \"mercury-2\",\n \"display_name\": \"Mercury 2\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"inception\\\"\",\n \"model = \\\"mercury-2\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"llamacpp\",\n \"display_name\": \"llama.cpp server\",\n \"catalog_provider\": \"llamacpp\",\n \"endpoint_style\": \"OpenAI-compatible llama-server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"llamacpp-qwen3.6-q4\",\n \"provider\": \"llamacpp\",\n \"model\": \"qwen3.6-35b-a3b-ud-q4-k-xl\",\n \"display_name\": \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"llamacpp\\\"\",\n \"model = \\\"llamacpp-qwen3.6-q4\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"llama.cpp gets its own provider so Harn can model Qwen chat-template and thinking behavior separately from generic local OpenAI-compatible servers.\"\n ],\n \"caveats\": [\n \"Run both provider readiness and tool probes after changing GGUF, context, KV-cache, or chat-template settings.\",\n \"2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {\\\"enable_thinking\\\":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install local-qwen3.6-gguf` for the recommended download and launch commands.\"\n ]\n },\n {\n \"id\": \"local\",\n \"display_name\": \"OpenAI-compatible local server\",\n \"catalog_provider\": \"local\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"local-gemma4\",\n \"provider\": \"local\",\n \"model\": \"gemma-4-26b-a4b-it\",\n \"display_name\": \"Gemma 4 26B MoE (local)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"local\\\"\",\n \"model = \\\"local-gemma4\\\"\",\n \"tool_format = \\\"text\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"low\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Use this generic provider when a local server speaks OpenAI chat completions but does not need a provider-specific quirk profile.\"\n ],\n \"caveats\": [\n \"Prefer `llamacpp` or `mlx` when those runtimes are known, because their capability rows can encode template-specific behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are exposed as OpenAI-compatible tool definitions unless the route is configured to prefer Harn text tools.\"\n ],\n \"local_setup_notes\": [\n \"Set `LOCAL_LLM_BASE_URL` and either `LOCAL_LLM_MODEL` or an explicit Harn model selector, then run `harn provider ready local`.\"\n ]\n },\n {\n \"id\": \"minimax\",\n \"display_name\": \"Minimax\",\n \"catalog_provider\": \"minimax\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MINIMAX_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"minimax:MiniMax-M2.5-highspeed\",\n \"provider\": \"minimax\",\n \"model\": \"MiniMax-M2.5-highspeed\",\n \"display_name\": \"MiniMax M2.5 (highspeed)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"minimax\\\"\",\n \"model = \\\"MiniMax-M2.5-highspeed\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mistral\",\n \"display_name\": \"Mistral via OpenRouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through OpenRouter\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:mistralai/mistral-small-2603\",\n \"provider\": \"openrouter\",\n \"model\": \"mistralai/mistral-small-2603\",\n \"display_name\": \"Mistral Small 4\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"mistralai/mistral-small-2603\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs hosted Mistral routes through OpenRouter today, so endpoint and auth behavior are OpenAI-compatible.\",\n \"Use this row for Mistral-family recommendation surfaces until a direct Mistral provider is cataloged.\"\n ],\n \"caveats\": [\n \"Provider-native behavior depends on the OpenRouter model route; run the coding-agent benchmark before promoting it to a default for critical harnesses.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mlx\",\n \"display_name\": \"MLX OpenAI-compatible server\",\n \"catalog_provider\": \"mlx\",\n \"endpoint_style\": \"OpenAI-compatible MLX server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"mlx-qwen3.6\",\n \"provider\": \"mlx\",\n \"model\": \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\",\n \"display_name\": \"Qwen3.6 35B-A3B (MLX 4-bit)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"mlx\\\"\",\n \"model = \\\"mlx-qwen3.6\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"MLX routes use native tools only after the served identity and tool probe match the cataloged model.\"\n ],\n \"caveats\": [\n \"`mlx_lm.server` flags vary by release; launch first, then verify with `harn provider ready mlx`.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install mlx-qwen3.6` for the venv, download, launch, and verification commands.\"\n ]\n },\n {\n \"id\": \"moonshot\",\n \"display_name\": \"Moonshot\",\n \"catalog_provider\": \"moonshot\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MOONSHOT_API_KEY\",\n \"MOONSHOT_AI_API_KEY\",\n \"KIMI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"moonshot:moonshot/kimi-k2.6\",\n \"provider\": \"moonshot\",\n \"model\": \"moonshot/kimi-k2.6\",\n \"display_name\": \"Kimi K2.6 (Moonshot direct)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"moonshot\\\"\",\n \"model = \\\"moonshot/kimi-k2.6\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nebius\",\n \"display_name\": \"Nebius\",\n \"catalog_provider\": \"nebius\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NEBIUS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nebius\",\n \"provider\": \"nebius\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"nebius\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nvidia\",\n \"display_name\": \"Nvidia\",\n \"catalog_provider\": \"nvidia\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NVIDIA_API_KEY\",\n \"NIM_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nvidia:nvidia/minimax-m2.7\",\n \"provider\": \"nvidia\",\n \"model\": \"nvidia/minimax-m2.7\",\n \"display_name\": \"MiniMax M2.7 (NVIDIA NIM)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"nvidia\\\"\",\n \"model = \\\"nvidia/minimax-m2.7\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"ollama\",\n \"display_name\": \"Ollama\",\n \"catalog_provider\": \"ollama\",\n \"endpoint_style\": \"Ollama native chat API\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"devstral-small-2\",\n \"provider\": \"ollama\",\n \"model\": \"devstral-small-2:24b\",\n \"display_name\": \"Devstral Small 2 24B\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"ollama\\\"\",\n \"model = \\\"devstral-small-2\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"format_kw\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Local Ollama model quality varies by template and quantization; Harn defaults known fragile routes to the text-tool contract.\",\n \"Use `harn provider tool-probe` receipts to promote aliases from unknown to native/text/disabled on a machine.\"\n ],\n \"caveats\": [\n \"Some Ollama native tool parsers reject otherwise valid text-mode model output; the capability table records those routes as text-only.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are local Harn tools; prefer the text tool contract unless a probe proves native calls work for the installed model.\"\n ],\n \"local_setup_notes\": [\n \"Run `harn models install devstral-small-2`, then verify with `harn provider ready ollama --model `. For local qwen3.x, use the llamacpp provider (e.g. `local-qwen3.6`) — Ollama's qwen3.5-family tool-call parser 500s on text-tool output.\"\n ]\n },\n {\n \"id\": \"openai\",\n \"display_name\": \"OpenAI\",\n \"catalog_provider\": \"openai\",\n \"endpoint_style\": \"OpenAI chat completions / Responses-compatible routes\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openai:gpt-5.4-mini\",\n \"provider\": \"openai\",\n \"model\": \"gpt-5.4-mini\",\n \"display_name\": \"GPT-5.4 Mini\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openai\\\"\",\n \"model = \\\"gpt-5.4-mini\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.5,\n \"status\": \"ga\",\n \"latency\": \"lower latency and faster output than default serving\",\n \"reliability\": \"provider may downgrade or reject unavailable premium capacity\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\"\n },\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"beta\",\n \"latency\": \"slower and variable synchronous latency\",\n \"reliability\": \"best-effort availability; provider can return resource unavailable\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"OpenAI-family routes default to native tool calls and native JSON structured output when the model row supports tools.\",\n \"Reasoning models use developer-role instructions and reasoning-summary transcript projection where the capability row declares it.\"\n ],\n \"caveats\": [\n \"Use explicit reasoning effort only on reasoning rows; non-reasoning chat models should keep thinking disabled.\"\n ],\n \"mcp_notes\": [\n \"Hosted MCP behavior is normalized through Harn tool definitions; provider-side hosted tools remain a separate provider feature.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"openrouter\",\n \"display_name\": \"Openrouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:google/gemini-2.5-flash\",\n \"provider\": \"openrouter\",\n \"model\": \"google/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (via OpenRouter)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"google/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"parasail\",\n \"display_name\": \"Parasail\",\n \"catalog_provider\": \"parasail\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"PARASAIL_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"parasail\",\n \"provider\": \"parasail\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"parasail\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"qianfan\",\n \"display_name\": \"Qianfan\",\n \"catalog_provider\": \"qianfan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"QIANFAN_API_KEY\",\n \"BAIDU_QIANFAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"qianfan\",\n \"provider\": \"qianfan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"qianfan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"sambanova\",\n \"display_name\": \"Sambanova\",\n \"catalog_provider\": \"sambanova\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SAMBANOVA_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"sambanova:sambanova/gpt-oss-120b\",\n \"provider\": \"sambanova\",\n \"model\": \"sambanova/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (SambaNova)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"sambanova\\\"\",\n \"model = \\\"sambanova/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): SambaNova native ended with a provider/tool-protocol failure (Harmony empty tool_calls / reasoning-channel-only class). Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"siliconflow\",\n \"display_name\": \"Siliconflow\",\n \"catalog_provider\": \"siliconflow\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SILICONFLOW_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"siliconflow\",\n \"provider\": \"siliconflow\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"siliconflow\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"tgi\",\n \"display_name\": \"Tgi\",\n \"catalog_provider\": \"tgi\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"tgi\",\n \"provider\": \"tgi\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"tgi\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"together\",\n \"display_name\": \"Together\",\n \"catalog_provider\": \"together\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"TOGETHER_AI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"together:openai/gpt-oss-20b\",\n \"provider\": \"together\",\n \"model\": \"openai/gpt-oss-20b\",\n \"display_name\": \"GPT-OSS 20B (Together)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"together\\\"\",\n \"model = \\\"openai/gpt-oss-20b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vercel_ai_gateway\",\n \"display_name\": \"Vercel AI Gateway\",\n \"catalog_provider\": \"vercel_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AI_GATEWAY_API_KEY\",\n \"VERCEL_AI_GATEWAY_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"vercel_ai_gateway:vercel/openai/gpt-5.4-nano\",\n \"provider\": \"vercel_ai_gateway\",\n \"model\": \"vercel/openai/gpt-5.4-nano\",\n \"display_name\": \"GPT-5.4 Nano (Vercel AI Gateway)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vercel_ai_gateway\\\"\",\n \"model = \\\"vercel/openai/gpt-5.4-nano\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vertex\",\n \"display_name\": \"Vertex\",\n \"catalog_provider\": \"vertex\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"VERTEX_AI_ACCESS_TOKEN\",\n \"GOOGLE_OAUTH_ACCESS_TOKEN\",\n \"GOOGLE_APPLICATION_CREDENTIALS\"\n ],\n \"recommended\": {\n \"selector\": \"vertex:vertex/gemini-2.5-flash\",\n \"provider\": \"vertex\",\n \"model\": \"vertex/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (Vertex AI)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vertex\\\"\",\n \"model = \\\"vertex/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vllm\",\n \"display_name\": \"Vllm\",\n \"catalog_provider\": \"vllm\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"vllm\",\n \"provider\": \"vllm\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"vllm\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"volcengine_ark\",\n \"display_name\": \"Volcengine Ark\",\n \"catalog_provider\": \"volcengine_ark\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ARK_API_KEY\",\n \"VOLCENGINE_ARK_API_KEY\",\n \"VOLCENGINE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"volcengine_ark\",\n \"provider\": \"volcengine_ark\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"volcengine_ark\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"xai\",\n \"display_name\": \"Xai\",\n \"catalog_provider\": \"xai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"XAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"xai:grok-build-0.1\",\n \"provider\": \"xai\",\n \"model\": \"grok-build-0.1\",\n \"display_name\": \"Grok Build 0.1\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"xai\\\"\",\n \"model = \\\"grok-build-0.1\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"zai\",\n \"display_name\": \"Zai\",\n \"catalog_provider\": \"zai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ZAI_API_KEY\",\n \"ZHIPU_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"zai:glm-4.6\",\n \"provider\": \"zai\",\n \"model\": \"glm-4.6\",\n \"display_name\": \"GLM 4.6\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"zai\\\"\",\n \"model = \\\"glm-4.6\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Family-consistency pin: GLM native channels emit `` markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n }\n ]\n}\n"}, "c89a66e1ef803972d9a0ab1a7998db27eb039a36": {"t": 1785809869.0174017, "n": 80491, "h": "85fb6dbaaa4fad99", "c": "{\n \"schema_version\": 1,\n \"generated_by\": \"harn provider catalog support\",\n \"sources\": {\n \"provider_catalog_schema_version\": 7,\n \"capability_matrix\": \"crates/harn-vm/src/llm/capabilities.toml\",\n \"notes\": \"crates/harn-cli/data/provider_support_notes.toml\",\n \"empirical\": []\n },\n \"providers\": [\n {\n \"id\": \"anthropic\",\n \"display_name\": \"Anthropic\",\n \"catalog_provider\": \"anthropic\",\n \"endpoint_style\": \"Anthropic Messages API\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ANTHROPIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"haiku\",\n \"provider\": \"anthropic\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"display_name\": \"Claude Haiku 4.5\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"anthropic\\\"\",\n \"model = \\\"haiku\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"tool_use\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"speed\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.0,\n \"status\": \"research_preview\",\n \"latency\": \"higher output-token throughput than standard Claude serving\",\n \"reliability\": \"research preview, account-manager gated\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Native tools, prompt caching, file upload, and XML-oriented scaffolding are first-class in Harn capability data.\",\n \"Claude 4.7 rows use adaptive thinking; older Claude 4 rows use explicit thinking controls where supported.\"\n ],\n \"caveats\": [\n \"Strict JSON output is modeled as tool-use or XML-tagged output rather than OpenAI-style response_json_schema.\"\n ],\n \"mcp_notes\": [\n \"No provider-specific MCP connector is required; Harn exposes MCP tools through the runtime tool registry.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"atlas\",\n \"display_name\": \"Atlas\",\n \"catalog_provider\": \"atlas\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ATLAS_API_KEY\",\n \"ATLASCLOUD_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"atlas\",\n \"provider\": \"atlas\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"atlas\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"azure_openai\",\n \"display_name\": \"Azure Openai\",\n \"catalog_provider\": \"azure_openai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_AD_TOKEN\",\n \"AZURE_OPENAI_BEARER_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"azure_openai:gpt-*\",\n \"provider\": \"azure_openai\",\n \"model\": \"gpt-*\",\n \"display_name\": null,\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"azure_openai\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"baseten\",\n \"display_name\": \"Baseten\",\n \"catalog_provider\": \"baseten\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"BASETEN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"baseten:baseten/openai/gpt-oss-120b\",\n \"provider\": \"baseten\",\n \"model\": \"baseten/openai/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Baseten)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"baseten\\\"\",\n \"model = \\\"baseten/openai/gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"bedrock\",\n \"display_name\": \"Bedrock\",\n \"catalog_provider\": \"bedrock\",\n \"endpoint_style\": \"AWS Bedrock Converse\",\n \"classification\": \"hosted\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"bedrock:anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"provider\": \"bedrock\",\n \"model\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"display_name\": \"Claude Sonnet 4.5 (Amazon Bedrock)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"bedrock\\\"\",\n \"model = \\\"anthropic.claude-sonnet-4-5-20250929-v1:0\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cerebras\",\n \"display_name\": \"Cerebras\",\n \"catalog_provider\": \"cerebras\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CEREBRAS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cerebras/gpt-oss-120b\",\n \"provider\": \"cerebras\",\n \"model\": \"gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Cerebras)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cerebras\\\"\",\n \"model = \\\"gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs Cerebras public serverless rows separately from dedicated-endpoint weights so clients do not present unprovisioned enterprise endpoints as one-click routes.\",\n \"Use the slash-prefixed selector form (`cerebras/`) when a single string must carry both provider and model identity; Harn strips the prefix before sending the provider-native model id.\"\n ],\n \"caveats\": [\n \"Preview rows such as `zai-glm-4.7` may be discontinued by Cerebras on short notice; pin public production workloads to non-preview rows unless the caller opts into preview behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are normalized through Harn tool definitions before they become OpenAI-compatible Cerebras tool schemas.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cloudflare_ai_gateway\",\n \"display_name\": \"Cloudflare Ai Gateway\",\n \"catalog_provider\": \"cloudflare_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CLOUDFLARE_API_TOKEN\",\n \"CLOUDFLARE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cloudflare_ai_gateway\",\n \"provider\": \"cloudflare_ai_gateway\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"cloudflare_ai_gateway\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cohere\",\n \"display_name\": \"Cohere\",\n \"catalog_provider\": \"cohere\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"COHERE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cohere:command-a-plus-05-2026\",\n \"provider\": \"cohere\",\n \"model\": \"command-a-plus-05-2026\",\n \"display_name\": \"Command A+\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cohere\\\"\",\n \"model = \\\"command-a-plus-05-2026\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"dashscope\",\n \"display_name\": \"Dashscope\",\n \"catalog_provider\": \"dashscope\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DASHSCOPE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"dashscope:dashscope/qwen3-coder-next\",\n \"provider\": \"dashscope\",\n \"model\": \"dashscope/qwen3-coder-next\",\n \"display_name\": \"Qwen3 Coder Next (DashScope)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"dashscope\\\"\",\n \"model = \\\"dashscope/qwen3-coder-next\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepinfra\",\n \"display_name\": \"Deepinfra\",\n \"catalog_provider\": \"deepinfra\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPINFRA_API_KEY\",\n \"DEEPINFRA_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"deepinfra:deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"provider\": \"deepinfra\",\n \"model\": \"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"display_name\": \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepinfra\\\"\",\n \"model = \\\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepseek\",\n \"display_name\": \"Deepseek\",\n \"catalog_provider\": \"deepseek\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPSEEK_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"deepseek:deepseek-v4-flash\",\n \"provider\": \"deepseek\",\n \"model\": \"deepseek-v4-flash\",\n \"display_name\": \"DeepSeek V4 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepseek\\\"\",\n \"model = \\\"deepseek-v4-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"fireworks\",\n \"display_name\": \"Fireworks\",\n \"catalog_provider\": \"fireworks\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FIREWORKS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"fireworks:accounts/fireworks/models/gpt-oss-120b\",\n \"provider\": \"fireworks\",\n \"model\": \"accounts/fireworks/models/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Fireworks)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"fireworks\\\"\",\n \"model = \\\"accounts/fireworks/models/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"flexai\",\n \"display_name\": \"Flexai\",\n \"catalog_provider\": \"flexai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FLEXAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"flexai\",\n \"provider\": \"flexai\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"flexai\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"friendli\",\n \"display_name\": \"Friendli\",\n \"catalog_provider\": \"friendli\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FRIENDLI_API_KEY\",\n \"FRIENDLI_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"friendli\",\n \"provider\": \"friendli\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"friendli\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"gemini\",\n \"display_name\": \"Gemini API\",\n \"catalog_provider\": \"gemini\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GEMINI_API_KEY\",\n \"GOOGLE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"gemini:gemini-2.5-flash\",\n \"provider\": \"gemini\",\n \"model\": \"gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"gemini\\\"\",\n \"model = \\\"gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\",\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"variable synchronous latency for latency-tolerant workloads\",\n \"reliability\": \"best-effort availability; resource unavailability is possible\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\"\n },\n {\n \"id\": \"priority\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"priority\",\n \"discount_percent\": null,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"predictable low-latency serving for user-facing traffic\",\n \"reliability\": \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"GenerateContent responses expose downgrade via x-gemini-service-tier.\"\n }\n ],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn lowers native tools to Gemini function declarations and maps function responses back into the transcript.\",\n \"Gemini response usage maps cached-content token counts when the provider reports them.\"\n ],\n \"caveats\": [\n \"Harn does not create Gemini context-cache resources yet; cache accounting is therefore observational.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are regular Harn runtime tools before they become Gemini function declarations.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"github_models\",\n \"display_name\": \"Github Models\",\n \"catalog_provider\": \"github_models\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GITHUB_MODELS_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"github_models\",\n \"provider\": \"github_models\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"github_models\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"groq\",\n \"display_name\": \"Groq\",\n \"catalog_provider\": \"groq\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GROQ_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"groq:llama-3.1-8b-instant\",\n \"provider\": \"groq\",\n \"model\": \"llama-3.1-8b-instant\",\n \"display_name\": \"Llama 3.1 8B Instant (Groq)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"groq\\\"\",\n \"model = \\\"llama-3.1-8b-instant\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"huggingface\",\n \"display_name\": \"Hugging Face Inference Providers\",\n \"catalog_provider\": \"huggingface\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through the HF router\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HF_TOKEN\",\n \"HUGGINGFACE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"huggingface-qwen3-coder\",\n \"provider\": \"huggingface\",\n \"model\": \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"display_name\": \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"huggingface\\\"\",\n \"model = \\\"huggingface-qwen3-coder\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"The Hugging Face router uses the OpenAI-compatible chat completions API and supports tools and streaming for chat-completion models.\",\n \"Qwen3-Coder 480B A35B is the recommended HF router coding row because its model card publishes native 262K context, agentic coding focus, and a function-call-oriented format.\"\n ],\n \"caveats\": [\n \"Router availability, latency, and pricing depend on the selected upstream provider; run readiness and tool probes before promoting a route into production defaults.\",\n \"Do not infer reasoning controls from other Qwen rows: this Qwen3-Coder model card says the model is non-thinking.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hunyuan\",\n \"display_name\": \"Hunyuan\",\n \"catalog_provider\": \"hunyuan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HUNYUAN_API_KEY\",\n \"TENCENT_HUNYUAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hunyuan\",\n \"provider\": \"hunyuan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hunyuan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hyperbolic\",\n \"display_name\": \"Hyperbolic\",\n \"catalog_provider\": \"hyperbolic\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HYPERBOLIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hyperbolic\",\n \"provider\": \"hyperbolic\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hyperbolic\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"inception\",\n \"display_name\": \"Inception\",\n \"catalog_provider\": \"inception\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"INCEPTION_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"inception:mercury-2\",\n \"provider\": \"inception\",\n \"model\": \"mercury-2\",\n \"display_name\": \"Mercury 2\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"inception\\\"\",\n \"model = \\\"mercury-2\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"llamacpp\",\n \"display_name\": \"llama.cpp server\",\n \"catalog_provider\": \"llamacpp\",\n \"endpoint_style\": \"OpenAI-compatible llama-server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"llamacpp-qwen3.6-q4\",\n \"provider\": \"llamacpp\",\n \"model\": \"qwen3.6-35b-a3b-ud-q4-k-xl\",\n \"display_name\": \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"llamacpp\\\"\",\n \"model = \\\"llamacpp-qwen3.6-q4\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"llama.cpp gets its own provider so Harn can model Qwen chat-template and thinking behavior separately from generic local OpenAI-compatible servers.\"\n ],\n \"caveats\": [\n \"Run both provider readiness and tool probes after changing GGUF, context, KV-cache, or chat-template settings.\",\n \"2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {\\\"enable_thinking\\\":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install local-qwen3.6-gguf` for the recommended download and launch commands.\"\n ]\n },\n {\n \"id\": \"local\",\n \"display_name\": \"OpenAI-compatible local server\",\n \"catalog_provider\": \"local\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"local-gemma4\",\n \"provider\": \"local\",\n \"model\": \"gemma-4-26b-a4b-it\",\n \"display_name\": \"Gemma 4 26B MoE (local)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"local\\\"\",\n \"model = \\\"local-gemma4\\\"\",\n \"tool_format = \\\"text\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"low\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Use this generic provider when a local server speaks OpenAI chat completions but does not need a provider-specific quirk profile.\"\n ],\n \"caveats\": [\n \"Prefer `llamacpp` or `mlx` when those runtimes are known, because their capability rows can encode template-specific behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are exposed as OpenAI-compatible tool definitions unless the route is configured to prefer Harn text tools.\"\n ],\n \"local_setup_notes\": [\n \"Set `LOCAL_LLM_BASE_URL` and either `LOCAL_LLM_MODEL` or an explicit Harn model selector, then run `harn provider ready local`.\"\n ]\n },\n {\n \"id\": \"minimax\",\n \"display_name\": \"Minimax\",\n \"catalog_provider\": \"minimax\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MINIMAX_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"minimax:MiniMax-M2.5-highspeed\",\n \"provider\": \"minimax\",\n \"model\": \"MiniMax-M2.5-highspeed\",\n \"display_name\": \"MiniMax M2.5 (highspeed)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"minimax\\\"\",\n \"model = \\\"MiniMax-M2.5-highspeed\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mistral\",\n \"display_name\": \"Mistral via OpenRouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through OpenRouter\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:mistralai/mistral-small-2603\",\n \"provider\": \"openrouter\",\n \"model\": \"mistralai/mistral-small-2603\",\n \"display_name\": \"Mistral Small 4\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"mistralai/mistral-small-2603\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs hosted Mistral routes through OpenRouter today, so endpoint and auth behavior are OpenAI-compatible.\",\n \"Use this row for Mistral-family recommendation surfaces until a direct Mistral provider is cataloged.\"\n ],\n \"caveats\": [\n \"Provider-native behavior depends on the OpenRouter model route; run the coding-agent benchmark before promoting it to a default for critical harnesses.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mlx\",\n \"display_name\": \"MLX OpenAI-compatible server\",\n \"catalog_provider\": \"mlx\",\n \"endpoint_style\": \"OpenAI-compatible MLX server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"mlx-qwen3.6\",\n \"provider\": \"mlx\",\n \"model\": \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\",\n \"display_name\": \"Qwen3.6 35B-A3B (MLX 4-bit)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"mlx\\\"\",\n \"model = \\\"mlx-qwen3.6\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"MLX routes use native tools only after the served identity and tool probe match the cataloged model.\"\n ],\n \"caveats\": [\n \"`mlx_lm.server` flags vary by release; launch first, then verify with `harn provider ready mlx`.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install mlx-qwen3.6` for the venv, download, launch, and verification commands.\"\n ]\n },\n {\n \"id\": \"moonshot\",\n \"display_name\": \"Moonshot\",\n \"catalog_provider\": \"moonshot\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MOONSHOT_API_KEY\",\n \"MOONSHOT_AI_API_KEY\",\n \"KIMI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"moonshot:moonshot/kimi-k2.6\",\n \"provider\": \"moonshot\",\n \"model\": \"moonshot/kimi-k2.6\",\n \"display_name\": \"Kimi K2.6 (Moonshot direct)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"moonshot\\\"\",\n \"model = \\\"moonshot/kimi-k2.6\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nebius\",\n \"display_name\": \"Nebius\",\n \"catalog_provider\": \"nebius\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NEBIUS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nebius\",\n \"provider\": \"nebius\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"nebius\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nvidia\",\n \"display_name\": \"Nvidia\",\n \"catalog_provider\": \"nvidia\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NVIDIA_API_KEY\",\n \"NIM_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nvidia:nvidia/minimax-m2.7\",\n \"provider\": \"nvidia\",\n \"model\": \"nvidia/minimax-m2.7\",\n \"display_name\": \"MiniMax M2.7 (NVIDIA NIM)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"nvidia\\\"\",\n \"model = \\\"nvidia/minimax-m2.7\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"ollama\",\n \"display_name\": \"Ollama\",\n \"catalog_provider\": \"ollama\",\n \"endpoint_style\": \"Ollama native chat API\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"devstral-small-2\",\n \"provider\": \"ollama\",\n \"model\": \"devstral-small-2:24b\",\n \"display_name\": \"Devstral Small 2 24B\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"ollama\\\"\",\n \"model = \\\"devstral-small-2\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"format_kw\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Local Ollama model quality varies by template and quantization; Harn defaults known fragile routes to the text-tool contract.\",\n \"Use `harn provider tool-probe` receipts to promote aliases from unknown to native/text/disabled on a machine.\"\n ],\n \"caveats\": [\n \"Some Ollama native tool parsers reject otherwise valid text-mode model output; the capability table records those routes as text-only.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are local Harn tools; prefer the text tool contract unless a probe proves native calls work for the installed model.\"\n ],\n \"local_setup_notes\": [\n \"Run `harn models install devstral-small-2`, then verify with `harn provider ready ollama --model `. For local qwen3.x, use the llamacpp provider (e.g. `local-qwen3.6`) — Ollama's qwen3.5-family tool-call parser 500s on text-tool output.\"\n ]\n },\n {\n \"id\": \"openai\",\n \"display_name\": \"OpenAI\",\n \"catalog_provider\": \"openai\",\n \"endpoint_style\": \"OpenAI chat completions / Responses-compatible routes\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openai:gpt-5.4-mini\",\n \"provider\": \"openai\",\n \"model\": \"gpt-5.4-mini\",\n \"display_name\": \"GPT-5.4 Mini\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openai\\\"\",\n \"model = \\\"gpt-5.4-mini\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.5,\n \"status\": \"ga\",\n \"latency\": \"lower latency and faster output than default serving\",\n \"reliability\": \"provider may downgrade or reject unavailable premium capacity\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\"\n },\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"beta\",\n \"latency\": \"slower and variable synchronous latency\",\n \"reliability\": \"best-effort availability; provider can return resource unavailable\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"OpenAI-family routes default to native tool calls and native JSON structured output when the model row supports tools.\",\n \"Reasoning models use developer-role instructions and reasoning-summary transcript projection where the capability row declares it.\"\n ],\n \"caveats\": [\n \"Use explicit reasoning effort only on reasoning rows; non-reasoning chat models should keep thinking disabled.\"\n ],\n \"mcp_notes\": [\n \"Hosted MCP behavior is normalized through Harn tool definitions; provider-side hosted tools remain a separate provider feature.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"openrouter\",\n \"display_name\": \"Openrouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:google/gemini-2.5-flash\",\n \"provider\": \"openrouter\",\n \"model\": \"google/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (via OpenRouter)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"google/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"parasail\",\n \"display_name\": \"Parasail\",\n \"catalog_provider\": \"parasail\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"PARASAIL_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"parasail\",\n \"provider\": \"parasail\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"parasail\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"qianfan\",\n \"display_name\": \"Qianfan\",\n \"catalog_provider\": \"qianfan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"QIANFAN_API_KEY\",\n \"BAIDU_QIANFAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"qianfan\",\n \"provider\": \"qianfan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"qianfan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"sambanova\",\n \"display_name\": \"Sambanova\",\n \"catalog_provider\": \"sambanova\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SAMBANOVA_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"sambanova:sambanova/gpt-oss-120b\",\n \"provider\": \"sambanova\",\n \"model\": \"sambanova/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (SambaNova)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"sambanova\\\"\",\n \"model = \\\"sambanova/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): SambaNova native ended with a provider/tool-protocol failure (Harmony empty tool_calls / reasoning-channel-only class). Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"siliconflow\",\n \"display_name\": \"Siliconflow\",\n \"catalog_provider\": \"siliconflow\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SILICONFLOW_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"siliconflow\",\n \"provider\": \"siliconflow\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"siliconflow\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"tgi\",\n \"display_name\": \"Tgi\",\n \"catalog_provider\": \"tgi\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"tgi\",\n \"provider\": \"tgi\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"tgi\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"together\",\n \"display_name\": \"Together\",\n \"catalog_provider\": \"together\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"TOGETHER_AI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"together:openai/gpt-oss-20b\",\n \"provider\": \"together\",\n \"model\": \"openai/gpt-oss-20b\",\n \"display_name\": \"GPT-OSS 20B (Together)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"together\\\"\",\n \"model = \\\"openai/gpt-oss-20b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vercel_ai_gateway\",\n \"display_name\": \"Vercel AI Gateway\",\n \"catalog_provider\": \"vercel_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AI_GATEWAY_API_KEY\",\n \"VERCEL_AI_GATEWAY_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"vercel_ai_gateway:vercel/openai/gpt-5.4-nano\",\n \"provider\": \"vercel_ai_gateway\",\n \"model\": \"vercel/openai/gpt-5.4-nano\",\n \"display_name\": \"GPT-5.4 Nano (Vercel AI Gateway)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vercel_ai_gateway\\\"\",\n \"model = \\\"vercel/openai/gpt-5.4-nano\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vertex\",\n \"display_name\": \"Vertex\",\n \"catalog_provider\": \"vertex\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"VERTEX_AI_ACCESS_TOKEN\",\n \"GOOGLE_OAUTH_ACCESS_TOKEN\",\n \"GOOGLE_APPLICATION_CREDENTIALS\"\n ],\n \"recommended\": {\n \"selector\": \"vertex:vertex/gemini-2.5-flash\",\n \"provider\": \"vertex\",\n \"model\": \"vertex/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (Vertex AI)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vertex\\\"\",\n \"model = \\\"vertex/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vllm\",\n \"display_name\": \"Vllm\",\n \"catalog_provider\": \"vllm\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"vllm\",\n \"provider\": \"vllm\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"vllm\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"volcengine_ark\",\n \"display_name\": \"Volcengine Ark\",\n \"catalog_provider\": \"volcengine_ark\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ARK_API_KEY\",\n \"VOLCENGINE_ARK_API_KEY\",\n \"VOLCENGINE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"volcengine_ark\",\n \"provider\": \"volcengine_ark\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"volcengine_ark\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"xai\",\n \"display_name\": \"Xai\",\n \"catalog_provider\": \"xai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"XAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"xai:grok-build-0.1\",\n \"provider\": \"xai\",\n \"model\": \"grok-build-0.1\",\n \"display_name\": \"Grok Build 0.1\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"xai\\\"\",\n \"model = \\\"grok-build-0.1\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"zai\",\n \"display_name\": \"Zai\",\n \"catalog_provider\": \"zai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ZAI_API_KEY\",\n \"ZHIPU_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"zai:glm-4.6\",\n \"provider\": \"zai\",\n \"model\": \"glm-4.6\",\n \"display_name\": \"GLM 4.6\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"zai\\\"\",\n \"model = \\\"glm-4.6\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Family-consistency pin: GLM native channels emit `` markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n }\n ]\n}\n"}, "1936498d9b6beba73040723fa3e43edf43b6e9a6": {"t": 1785809903.8052273, "n": 80491, "h": "85fb6dbaaa4fad99", "c": "{\n \"schema_version\": 1,\n \"generated_by\": \"harn provider catalog support\",\n \"sources\": {\n \"provider_catalog_schema_version\": 7,\n \"capability_matrix\": \"crates/harn-vm/src/llm/capabilities.toml\",\n \"notes\": \"crates/harn-cli/data/provider_support_notes.toml\",\n \"empirical\": []\n },\n \"providers\": [\n {\n \"id\": \"anthropic\",\n \"display_name\": \"Anthropic\",\n \"catalog_provider\": \"anthropic\",\n \"endpoint_style\": \"Anthropic Messages API\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ANTHROPIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"haiku\",\n \"provider\": \"anthropic\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"display_name\": \"Claude Haiku 4.5\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"anthropic\\\"\",\n \"model = \\\"haiku\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"tool_use\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"speed\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.0,\n \"status\": \"research_preview\",\n \"latency\": \"higher output-token throughput than standard Claude serving\",\n \"reliability\": \"research preview, account-manager gated\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Native tools, prompt caching, file upload, and XML-oriented scaffolding are first-class in Harn capability data.\",\n \"Claude 4.7 rows use adaptive thinking; older Claude 4 rows use explicit thinking controls where supported.\"\n ],\n \"caveats\": [\n \"Strict JSON output is modeled as tool-use or XML-tagged output rather than OpenAI-style response_json_schema.\"\n ],\n \"mcp_notes\": [\n \"No provider-specific MCP connector is required; Harn exposes MCP tools through the runtime tool registry.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"atlas\",\n \"display_name\": \"Atlas\",\n \"catalog_provider\": \"atlas\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ATLAS_API_KEY\",\n \"ATLASCLOUD_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"atlas\",\n \"provider\": \"atlas\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"atlas\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"azure_openai\",\n \"display_name\": \"Azure Openai\",\n \"catalog_provider\": \"azure_openai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_AD_TOKEN\",\n \"AZURE_OPENAI_BEARER_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"azure_openai:gpt-*\",\n \"provider\": \"azure_openai\",\n \"model\": \"gpt-*\",\n \"display_name\": null,\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"azure_openai\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"baseten\",\n \"display_name\": \"Baseten\",\n \"catalog_provider\": \"baseten\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"BASETEN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"baseten:baseten/openai/gpt-oss-120b\",\n \"provider\": \"baseten\",\n \"model\": \"baseten/openai/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Baseten)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"baseten\\\"\",\n \"model = \\\"baseten/openai/gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"bedrock\",\n \"display_name\": \"Bedrock\",\n \"catalog_provider\": \"bedrock\",\n \"endpoint_style\": \"AWS Bedrock Converse\",\n \"classification\": \"hosted\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"bedrock:anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"provider\": \"bedrock\",\n \"model\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"display_name\": \"Claude Sonnet 4.5 (Amazon Bedrock)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"bedrock\\\"\",\n \"model = \\\"anthropic.claude-sonnet-4-5-20250929-v1:0\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cerebras\",\n \"display_name\": \"Cerebras\",\n \"catalog_provider\": \"cerebras\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CEREBRAS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cerebras/gpt-oss-120b\",\n \"provider\": \"cerebras\",\n \"model\": \"gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Cerebras)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cerebras\\\"\",\n \"model = \\\"gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs Cerebras public serverless rows separately from dedicated-endpoint weights so clients do not present unprovisioned enterprise endpoints as one-click routes.\",\n \"Use the slash-prefixed selector form (`cerebras/`) when a single string must carry both provider and model identity; Harn strips the prefix before sending the provider-native model id.\"\n ],\n \"caveats\": [\n \"Preview rows such as `zai-glm-4.7` may be discontinued by Cerebras on short notice; pin public production workloads to non-preview rows unless the caller opts into preview behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are normalized through Harn tool definitions before they become OpenAI-compatible Cerebras tool schemas.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cloudflare_ai_gateway\",\n \"display_name\": \"Cloudflare Ai Gateway\",\n \"catalog_provider\": \"cloudflare_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CLOUDFLARE_API_TOKEN\",\n \"CLOUDFLARE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cloudflare_ai_gateway\",\n \"provider\": \"cloudflare_ai_gateway\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"cloudflare_ai_gateway\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cohere\",\n \"display_name\": \"Cohere\",\n \"catalog_provider\": \"cohere\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"COHERE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cohere:command-a-plus-05-2026\",\n \"provider\": \"cohere\",\n \"model\": \"command-a-plus-05-2026\",\n \"display_name\": \"Command A+\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cohere\\\"\",\n \"model = \\\"command-a-plus-05-2026\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"dashscope\",\n \"display_name\": \"Dashscope\",\n \"catalog_provider\": \"dashscope\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DASHSCOPE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"dashscope:dashscope/qwen3-coder-next\",\n \"provider\": \"dashscope\",\n \"model\": \"dashscope/qwen3-coder-next\",\n \"display_name\": \"Qwen3 Coder Next (DashScope)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"dashscope\\\"\",\n \"model = \\\"dashscope/qwen3-coder-next\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepinfra\",\n \"display_name\": \"Deepinfra\",\n \"catalog_provider\": \"deepinfra\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPINFRA_API_KEY\",\n \"DEEPINFRA_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"deepinfra:deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"provider\": \"deepinfra\",\n \"model\": \"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"display_name\": \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepinfra\\\"\",\n \"model = \\\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepseek\",\n \"display_name\": \"Deepseek\",\n \"catalog_provider\": \"deepseek\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPSEEK_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"deepseek:deepseek-v4-flash\",\n \"provider\": \"deepseek\",\n \"model\": \"deepseek-v4-flash\",\n \"display_name\": \"DeepSeek V4 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepseek\\\"\",\n \"model = \\\"deepseek-v4-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"fireworks\",\n \"display_name\": \"Fireworks\",\n \"catalog_provider\": \"fireworks\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FIREWORKS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"fireworks:accounts/fireworks/models/gpt-oss-120b\",\n \"provider\": \"fireworks\",\n \"model\": \"accounts/fireworks/models/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Fireworks)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"fireworks\\\"\",\n \"model = \\\"accounts/fireworks/models/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"flexai\",\n \"display_name\": \"Flexai\",\n \"catalog_provider\": \"flexai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FLEXAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"flexai\",\n \"provider\": \"flexai\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"flexai\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"friendli\",\n \"display_name\": \"Friendli\",\n \"catalog_provider\": \"friendli\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FRIENDLI_API_KEY\",\n \"FRIENDLI_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"friendli\",\n \"provider\": \"friendli\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"friendli\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"gemini\",\n \"display_name\": \"Gemini API\",\n \"catalog_provider\": \"gemini\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GEMINI_API_KEY\",\n \"GOOGLE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"gemini:gemini-2.5-flash\",\n \"provider\": \"gemini\",\n \"model\": \"gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"gemini\\\"\",\n \"model = \\\"gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\",\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"variable synchronous latency for latency-tolerant workloads\",\n \"reliability\": \"best-effort availability; resource unavailability is possible\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\"\n },\n {\n \"id\": \"priority\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"priority\",\n \"discount_percent\": null,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"predictable low-latency serving for user-facing traffic\",\n \"reliability\": \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"GenerateContent responses expose downgrade via x-gemini-service-tier.\"\n }\n ],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn lowers native tools to Gemini function declarations and maps function responses back into the transcript.\",\n \"Gemini response usage maps cached-content token counts when the provider reports them.\"\n ],\n \"caveats\": [\n \"Harn does not create Gemini context-cache resources yet; cache accounting is therefore observational.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are regular Harn runtime tools before they become Gemini function declarations.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"github_models\",\n \"display_name\": \"Github Models\",\n \"catalog_provider\": \"github_models\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GITHUB_MODELS_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"github_models\",\n \"provider\": \"github_models\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"github_models\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"groq\",\n \"display_name\": \"Groq\",\n \"catalog_provider\": \"groq\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GROQ_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"groq:llama-3.1-8b-instant\",\n \"provider\": \"groq\",\n \"model\": \"llama-3.1-8b-instant\",\n \"display_name\": \"Llama 3.1 8B Instant (Groq)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"groq\\\"\",\n \"model = \\\"llama-3.1-8b-instant\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"huggingface\",\n \"display_name\": \"Hugging Face Inference Providers\",\n \"catalog_provider\": \"huggingface\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through the HF router\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HF_TOKEN\",\n \"HUGGINGFACE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"huggingface-qwen3-coder\",\n \"provider\": \"huggingface\",\n \"model\": \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"display_name\": \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"huggingface\\\"\",\n \"model = \\\"huggingface-qwen3-coder\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"The Hugging Face router uses the OpenAI-compatible chat completions API and supports tools and streaming for chat-completion models.\",\n \"Qwen3-Coder 480B A35B is the recommended HF router coding row because its model card publishes native 262K context, agentic coding focus, and a function-call-oriented format.\"\n ],\n \"caveats\": [\n \"Router availability, latency, and pricing depend on the selected upstream provider; run readiness and tool probes before promoting a route into production defaults.\",\n \"Do not infer reasoning controls from other Qwen rows: this Qwen3-Coder model card says the model is non-thinking.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hunyuan\",\n \"display_name\": \"Hunyuan\",\n \"catalog_provider\": \"hunyuan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HUNYUAN_API_KEY\",\n \"TENCENT_HUNYUAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hunyuan\",\n \"provider\": \"hunyuan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hunyuan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hyperbolic\",\n \"display_name\": \"Hyperbolic\",\n \"catalog_provider\": \"hyperbolic\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HYPERBOLIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hyperbolic\",\n \"provider\": \"hyperbolic\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hyperbolic\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"inception\",\n \"display_name\": \"Inception\",\n \"catalog_provider\": \"inception\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"INCEPTION_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"inception:mercury-2\",\n \"provider\": \"inception\",\n \"model\": \"mercury-2\",\n \"display_name\": \"Mercury 2\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"inception\\\"\",\n \"model = \\\"mercury-2\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"llamacpp\",\n \"display_name\": \"llama.cpp server\",\n \"catalog_provider\": \"llamacpp\",\n \"endpoint_style\": \"OpenAI-compatible llama-server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"llamacpp-qwen3.6-q4\",\n \"provider\": \"llamacpp\",\n \"model\": \"qwen3.6-35b-a3b-ud-q4-k-xl\",\n \"display_name\": \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"llamacpp\\\"\",\n \"model = \\\"llamacpp-qwen3.6-q4\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"llama.cpp gets its own provider so Harn can model Qwen chat-template and thinking behavior separately from generic local OpenAI-compatible servers.\"\n ],\n \"caveats\": [\n \"Run both provider readiness and tool probes after changing GGUF, context, KV-cache, or chat-template settings.\",\n \"2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {\\\"enable_thinking\\\":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install local-qwen3.6-gguf` for the recommended download and launch commands.\"\n ]\n },\n {\n \"id\": \"local\",\n \"display_name\": \"OpenAI-compatible local server\",\n \"catalog_provider\": \"local\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"local-gemma4\",\n \"provider\": \"local\",\n \"model\": \"gemma-4-26b-a4b-it\",\n \"display_name\": \"Gemma 4 26B MoE (local)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"local\\\"\",\n \"model = \\\"local-gemma4\\\"\",\n \"tool_format = \\\"text\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"low\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Use this generic provider when a local server speaks OpenAI chat completions but does not need a provider-specific quirk profile.\"\n ],\n \"caveats\": [\n \"Prefer `llamacpp` or `mlx` when those runtimes are known, because their capability rows can encode template-specific behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are exposed as OpenAI-compatible tool definitions unless the route is configured to prefer Harn text tools.\"\n ],\n \"local_setup_notes\": [\n \"Set `LOCAL_LLM_BASE_URL` and either `LOCAL_LLM_MODEL` or an explicit Harn model selector, then run `harn provider ready local`.\"\n ]\n },\n {\n \"id\": \"minimax\",\n \"display_name\": \"Minimax\",\n \"catalog_provider\": \"minimax\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MINIMAX_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"minimax:MiniMax-M2.5-highspeed\",\n \"provider\": \"minimax\",\n \"model\": \"MiniMax-M2.5-highspeed\",\n \"display_name\": \"MiniMax M2.5 (highspeed)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"minimax\\\"\",\n \"model = \\\"MiniMax-M2.5-highspeed\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mistral\",\n \"display_name\": \"Mistral via OpenRouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through OpenRouter\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:mistralai/mistral-small-2603\",\n \"provider\": \"openrouter\",\n \"model\": \"mistralai/mistral-small-2603\",\n \"display_name\": \"Mistral Small 4\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"mistralai/mistral-small-2603\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs hosted Mistral routes through OpenRouter today, so endpoint and auth behavior are OpenAI-compatible.\",\n \"Use this row for Mistral-family recommendation surfaces until a direct Mistral provider is cataloged.\"\n ],\n \"caveats\": [\n \"Provider-native behavior depends on the OpenRouter model route; run the coding-agent benchmark before promoting it to a default for critical harnesses.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mlx\",\n \"display_name\": \"MLX OpenAI-compatible server\",\n \"catalog_provider\": \"mlx\",\n \"endpoint_style\": \"OpenAI-compatible MLX server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"mlx-qwen3.6\",\n \"provider\": \"mlx\",\n \"model\": \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\",\n \"display_name\": \"Qwen3.6 35B-A3B (MLX 4-bit)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"mlx\\\"\",\n \"model = \\\"mlx-qwen3.6\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"MLX routes use native tools only after the served identity and tool probe match the cataloged model.\"\n ],\n \"caveats\": [\n \"`mlx_lm.server` flags vary by release; launch first, then verify with `harn provider ready mlx`.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install mlx-qwen3.6` for the venv, download, launch, and verification commands.\"\n ]\n },\n {\n \"id\": \"moonshot\",\n \"display_name\": \"Moonshot\",\n \"catalog_provider\": \"moonshot\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MOONSHOT_API_KEY\",\n \"MOONSHOT_AI_API_KEY\",\n \"KIMI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"moonshot:moonshot/kimi-k2.6\",\n \"provider\": \"moonshot\",\n \"model\": \"moonshot/kimi-k2.6\",\n \"display_name\": \"Kimi K2.6 (Moonshot direct)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"moonshot\\\"\",\n \"model = \\\"moonshot/kimi-k2.6\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nebius\",\n \"display_name\": \"Nebius\",\n \"catalog_provider\": \"nebius\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NEBIUS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nebius\",\n \"provider\": \"nebius\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"nebius\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nvidia\",\n \"display_name\": \"Nvidia\",\n \"catalog_provider\": \"nvidia\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NVIDIA_API_KEY\",\n \"NIM_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nvidia:nvidia/minimax-m2.7\",\n \"provider\": \"nvidia\",\n \"model\": \"nvidia/minimax-m2.7\",\n \"display_name\": \"MiniMax M2.7 (NVIDIA NIM)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"nvidia\\\"\",\n \"model = \\\"nvidia/minimax-m2.7\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"ollama\",\n \"display_name\": \"Ollama\",\n \"catalog_provider\": \"ollama\",\n \"endpoint_style\": \"Ollama native chat API\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"devstral-small-2\",\n \"provider\": \"ollama\",\n \"model\": \"devstral-small-2:24b\",\n \"display_name\": \"Devstral Small 2 24B\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"ollama\\\"\",\n \"model = \\\"devstral-small-2\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"format_kw\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Local Ollama model quality varies by template and quantization; Harn defaults known fragile routes to the text-tool contract.\",\n \"Use `harn provider tool-probe` receipts to promote aliases from unknown to native/text/disabled on a machine.\"\n ],\n \"caveats\": [\n \"Some Ollama native tool parsers reject otherwise valid text-mode model output; the capability table records those routes as text-only.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are local Harn tools; prefer the text tool contract unless a probe proves native calls work for the installed model.\"\n ],\n \"local_setup_notes\": [\n \"Run `harn models install devstral-small-2`, then verify with `harn provider ready ollama --model `. For local qwen3.x, use the llamacpp provider (e.g. `local-qwen3.6`) — Ollama's qwen3.5-family tool-call parser 500s on text-tool output.\"\n ]\n },\n {\n \"id\": \"openai\",\n \"display_name\": \"OpenAI\",\n \"catalog_provider\": \"openai\",\n \"endpoint_style\": \"OpenAI chat completions / Responses-compatible routes\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openai:gpt-5.4-mini\",\n \"provider\": \"openai\",\n \"model\": \"gpt-5.4-mini\",\n \"display_name\": \"GPT-5.4 Mini\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openai\\\"\",\n \"model = \\\"gpt-5.4-mini\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.5,\n \"status\": \"ga\",\n \"latency\": \"lower latency and faster output than default serving\",\n \"reliability\": \"provider may downgrade or reject unavailable premium capacity\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\"\n },\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"beta\",\n \"latency\": \"slower and variable synchronous latency\",\n \"reliability\": \"best-effort availability; provider can return resource unavailable\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"OpenAI-family routes default to native tool calls and native JSON structured output when the model row supports tools.\",\n \"Reasoning models use developer-role instructions and reasoning-summary transcript projection where the capability row declares it.\"\n ],\n \"caveats\": [\n \"Use explicit reasoning effort only on reasoning rows; non-reasoning chat models should keep thinking disabled.\"\n ],\n \"mcp_notes\": [\n \"Hosted MCP behavior is normalized through Harn tool definitions; provider-side hosted tools remain a separate provider feature.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"openrouter\",\n \"display_name\": \"Openrouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:google/gemini-2.5-flash\",\n \"provider\": \"openrouter\",\n \"model\": \"google/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (via OpenRouter)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"google/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"parasail\",\n \"display_name\": \"Parasail\",\n \"catalog_provider\": \"parasail\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"PARASAIL_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"parasail\",\n \"provider\": \"parasail\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"parasail\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"qianfan\",\n \"display_name\": \"Qianfan\",\n \"catalog_provider\": \"qianfan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"QIANFAN_API_KEY\",\n \"BAIDU_QIANFAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"qianfan\",\n \"provider\": \"qianfan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"qianfan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"sambanova\",\n \"display_name\": \"Sambanova\",\n \"catalog_provider\": \"sambanova\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SAMBANOVA_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"sambanova:sambanova/gpt-oss-120b\",\n \"provider\": \"sambanova\",\n \"model\": \"sambanova/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (SambaNova)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"sambanova\\\"\",\n \"model = \\\"sambanova/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): SambaNova native ended with a provider/tool-protocol failure (Harmony empty tool_calls / reasoning-channel-only class). Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"siliconflow\",\n \"display_name\": \"Siliconflow\",\n \"catalog_provider\": \"siliconflow\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SILICONFLOW_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"siliconflow\",\n \"provider\": \"siliconflow\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"siliconflow\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"tgi\",\n \"display_name\": \"Tgi\",\n \"catalog_provider\": \"tgi\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"tgi\",\n \"provider\": \"tgi\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"tgi\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"together\",\n \"display_name\": \"Together\",\n \"catalog_provider\": \"together\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"TOGETHER_AI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"together:openai/gpt-oss-20b\",\n \"provider\": \"together\",\n \"model\": \"openai/gpt-oss-20b\",\n \"display_name\": \"GPT-OSS 20B (Together)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"together\\\"\",\n \"model = \\\"openai/gpt-oss-20b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vercel_ai_gateway\",\n \"display_name\": \"Vercel AI Gateway\",\n \"catalog_provider\": \"vercel_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AI_GATEWAY_API_KEY\",\n \"VERCEL_AI_GATEWAY_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"vercel_ai_gateway:vercel/openai/gpt-5.4-nano\",\n \"provider\": \"vercel_ai_gateway\",\n \"model\": \"vercel/openai/gpt-5.4-nano\",\n \"display_name\": \"GPT-5.4 Nano (Vercel AI Gateway)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vercel_ai_gateway\\\"\",\n \"model = \\\"vercel/openai/gpt-5.4-nano\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vertex\",\n \"display_name\": \"Vertex\",\n \"catalog_provider\": \"vertex\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"VERTEX_AI_ACCESS_TOKEN\",\n \"GOOGLE_OAUTH_ACCESS_TOKEN\",\n \"GOOGLE_APPLICATION_CREDENTIALS\"\n ],\n \"recommended\": {\n \"selector\": \"vertex:vertex/gemini-2.5-flash\",\n \"provider\": \"vertex\",\n \"model\": \"vertex/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (Vertex AI)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vertex\\\"\",\n \"model = \\\"vertex/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vllm\",\n \"display_name\": \"Vllm\",\n \"catalog_provider\": \"vllm\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"vllm\",\n \"provider\": \"vllm\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"vllm\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"volcengine_ark\",\n \"display_name\": \"Volcengine Ark\",\n \"catalog_provider\": \"volcengine_ark\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ARK_API_KEY\",\n \"VOLCENGINE_ARK_API_KEY\",\n \"VOLCENGINE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"volcengine_ark\",\n \"provider\": \"volcengine_ark\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"volcengine_ark\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"xai\",\n \"display_name\": \"Xai\",\n \"catalog_provider\": \"xai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"XAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"xai:grok-build-0.1\",\n \"provider\": \"xai\",\n \"model\": \"grok-build-0.1\",\n \"display_name\": \"Grok Build 0.1\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"xai\\\"\",\n \"model = \\\"grok-build-0.1\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"zai\",\n \"display_name\": \"Zai\",\n \"catalog_provider\": \"zai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ZAI_API_KEY\",\n \"ZHIPU_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"zai:glm-4.6\",\n \"provider\": \"zai\",\n \"model\": \"glm-4.6\",\n \"display_name\": \"GLM 4.6\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"zai\\\"\",\n \"model = \\\"glm-4.6\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Family-consistency pin: GLM native channels emit `` markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n }\n ]\n}\n"}, "c4498623564f27649627b4ec890e3d98ecacb929": {"t": 1785846900.160334, "n": 80491, "h": "85fb6dbaaa4fad99", "c": "{\n \"schema_version\": 1,\n \"generated_by\": \"harn provider catalog support\",\n \"sources\": {\n \"provider_catalog_schema_version\": 7,\n \"capability_matrix\": \"crates/harn-vm/src/llm/capabilities.toml\",\n \"notes\": \"crates/harn-cli/data/provider_support_notes.toml\",\n \"empirical\": []\n },\n \"providers\": [\n {\n \"id\": \"anthropic\",\n \"display_name\": \"Anthropic\",\n \"catalog_provider\": \"anthropic\",\n \"endpoint_style\": \"Anthropic Messages API\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ANTHROPIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"haiku\",\n \"provider\": \"anthropic\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"display_name\": \"Claude Haiku 4.5\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"anthropic\\\"\",\n \"model = \\\"haiku\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"tool_use\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"speed\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.0,\n \"status\": \"research_preview\",\n \"latency\": \"higher output-token throughput than standard Claude serving\",\n \"reliability\": \"research preview, account-manager gated\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Native tools, prompt caching, file upload, and XML-oriented scaffolding are first-class in Harn capability data.\",\n \"Claude 4.7 rows use adaptive thinking; older Claude 4 rows use explicit thinking controls where supported.\"\n ],\n \"caveats\": [\n \"Strict JSON output is modeled as tool-use or XML-tagged output rather than OpenAI-style response_json_schema.\"\n ],\n \"mcp_notes\": [\n \"No provider-specific MCP connector is required; Harn exposes MCP tools through the runtime tool registry.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"atlas\",\n \"display_name\": \"Atlas\",\n \"catalog_provider\": \"atlas\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ATLAS_API_KEY\",\n \"ATLASCLOUD_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"atlas\",\n \"provider\": \"atlas\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"atlas\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"azure_openai\",\n \"display_name\": \"Azure Openai\",\n \"catalog_provider\": \"azure_openai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_AD_TOKEN\",\n \"AZURE_OPENAI_BEARER_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"azure_openai:gpt-*\",\n \"provider\": \"azure_openai\",\n \"model\": \"gpt-*\",\n \"display_name\": null,\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"azure_openai\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"baseten\",\n \"display_name\": \"Baseten\",\n \"catalog_provider\": \"baseten\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"BASETEN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"baseten:baseten/openai/gpt-oss-120b\",\n \"provider\": \"baseten\",\n \"model\": \"baseten/openai/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Baseten)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"baseten\\\"\",\n \"model = \\\"baseten/openai/gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"bedrock\",\n \"display_name\": \"Bedrock\",\n \"catalog_provider\": \"bedrock\",\n \"endpoint_style\": \"AWS Bedrock Converse\",\n \"classification\": \"hosted\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"bedrock:anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"provider\": \"bedrock\",\n \"model\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"display_name\": \"Claude Sonnet 4.5 (Amazon Bedrock)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"bedrock\\\"\",\n \"model = \\\"anthropic.claude-sonnet-4-5-20250929-v1:0\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"xml_tagged\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"xml_tagged\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cerebras\",\n \"display_name\": \"Cerebras\",\n \"catalog_provider\": \"cerebras\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CEREBRAS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cerebras/gpt-oss-120b\",\n \"provider\": \"cerebras\",\n \"model\": \"gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Cerebras)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cerebras\\\"\",\n \"model = \\\"gpt-oss-120b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs Cerebras public serverless rows separately from dedicated-endpoint weights so clients do not present unprovisioned enterprise endpoints as one-click routes.\",\n \"Use the slash-prefixed selector form (`cerebras/`) when a single string must carry both provider and model identity; Harn strips the prefix before sending the provider-native model id.\"\n ],\n \"caveats\": [\n \"Preview rows such as `zai-glm-4.7` may be discontinued by Cerebras on short notice; pin public production workloads to non-preview rows unless the caller opts into preview behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are normalized through Harn tool definitions before they become OpenAI-compatible Cerebras tool schemas.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cloudflare_ai_gateway\",\n \"display_name\": \"Cloudflare Ai Gateway\",\n \"catalog_provider\": \"cloudflare_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"CLOUDFLARE_API_TOKEN\",\n \"CLOUDFLARE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cloudflare_ai_gateway\",\n \"provider\": \"cloudflare_ai_gateway\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"cloudflare_ai_gateway\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"cohere\",\n \"display_name\": \"Cohere\",\n \"catalog_provider\": \"cohere\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"COHERE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"cohere:command-a-plus-05-2026\",\n \"provider\": \"cohere\",\n \"model\": \"command-a-plus-05-2026\",\n \"display_name\": \"Command A+\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"cohere\\\"\",\n \"model = \\\"command-a-plus-05-2026\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"dashscope\",\n \"display_name\": \"Dashscope\",\n \"catalog_provider\": \"dashscope\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DASHSCOPE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"dashscope:dashscope/qwen3-coder-next\",\n \"provider\": \"dashscope\",\n \"model\": \"dashscope/qwen3-coder-next\",\n \"display_name\": \"Qwen3 Coder Next (DashScope)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"dashscope\\\"\",\n \"model = \\\"dashscope/qwen3-coder-next\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepinfra\",\n \"display_name\": \"Deepinfra\",\n \"catalog_provider\": \"deepinfra\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPINFRA_API_KEY\",\n \"DEEPINFRA_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"deepinfra:deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"provider\": \"deepinfra\",\n \"model\": \"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"display_name\": \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepinfra\\\"\",\n \"model = \\\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"deepseek\",\n \"display_name\": \"Deepseek\",\n \"catalog_provider\": \"deepseek\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"DEEPSEEK_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"deepseek:deepseek-v4-flash\",\n \"provider\": \"deepseek\",\n \"model\": \"deepseek-v4-flash\",\n \"display_name\": \"DeepSeek V4 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"deepseek\\\"\",\n \"model = \\\"deepseek-v4-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"fireworks\",\n \"display_name\": \"Fireworks\",\n \"catalog_provider\": \"fireworks\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FIREWORKS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"fireworks:accounts/fireworks/models/gpt-oss-120b\",\n \"provider\": \"fireworks\",\n \"model\": \"accounts/fireworks/models/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (Fireworks)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"fireworks\\\"\",\n \"model = \\\"accounts/fireworks/models/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"flexai\",\n \"display_name\": \"Flexai\",\n \"catalog_provider\": \"flexai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FLEXAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"flexai\",\n \"provider\": \"flexai\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"flexai\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"friendli\",\n \"display_name\": \"Friendli\",\n \"catalog_provider\": \"friendli\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"FRIENDLI_API_KEY\",\n \"FRIENDLI_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"friendli\",\n \"provider\": \"friendli\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"friendli\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"gemini\",\n \"display_name\": \"Gemini API\",\n \"catalog_provider\": \"gemini\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GEMINI_API_KEY\",\n \"GOOGLE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"gemini:gemini-2.5-flash\",\n \"provider\": \"gemini\",\n \"model\": \"gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"gemini\\\"\",\n \"model = \\\"gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\",\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"variable synchronous latency for latency-tolerant workloads\",\n \"reliability\": \"best-effort availability; resource unavailability is possible\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\"\n },\n {\n \"id\": \"priority\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"priority\",\n \"discount_percent\": null,\n \"cost_multiplier\": null,\n \"status\": \"research_preview\",\n \"latency\": \"predictable low-latency serving for user-facing traffic\",\n \"reliability\": \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"GenerateContent responses expose downgrade via x-gemini-service-tier.\"\n }\n ],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn lowers native tools to Gemini function declarations and maps function responses back into the transcript.\",\n \"Gemini response usage maps cached-content token counts when the provider reports them.\"\n ],\n \"caveats\": [\n \"Harn does not create Gemini context-cache resources yet; cache accounting is therefore observational.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are regular Harn runtime tools before they become Gemini function declarations.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"github_models\",\n \"display_name\": \"Github Models\",\n \"catalog_provider\": \"github_models\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GITHUB_MODELS_TOKEN\"\n ],\n \"recommended\": {\n \"selector\": \"github_models\",\n \"provider\": \"github_models\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"github_models\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"groq\",\n \"display_name\": \"Groq\",\n \"catalog_provider\": \"groq\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"GROQ_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"groq:llama-3.1-8b-instant\",\n \"provider\": \"groq\",\n \"model\": \"llama-3.1-8b-instant\",\n \"display_name\": \"Llama 3.1 8B Instant (Groq)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"groq\\\"\",\n \"model = \\\"llama-3.1-8b-instant\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"huggingface\",\n \"display_name\": \"Hugging Face Inference Providers\",\n \"catalog_provider\": \"huggingface\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through the HF router\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HF_TOKEN\",\n \"HUGGINGFACE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"huggingface-qwen3-coder\",\n \"provider\": \"huggingface\",\n \"model\": \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"display_name\": \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"huggingface\\\"\",\n \"model = \\\"huggingface-qwen3-coder\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"The Hugging Face router uses the OpenAI-compatible chat completions API and supports tools and streaming for chat-completion models.\",\n \"Qwen3-Coder 480B A35B is the recommended HF router coding row because its model card publishes native 262K context, agentic coding focus, and a function-call-oriented format.\"\n ],\n \"caveats\": [\n \"Router availability, latency, and pricing depend on the selected upstream provider; run readiness and tool probes before promoting a route into production defaults.\",\n \"Do not infer reasoning controls from other Qwen rows: this Qwen3-Coder model card says the model is non-thinking.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hunyuan\",\n \"display_name\": \"Hunyuan\",\n \"catalog_provider\": \"hunyuan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HUNYUAN_API_KEY\",\n \"TENCENT_HUNYUAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hunyuan\",\n \"provider\": \"hunyuan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hunyuan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"hyperbolic\",\n \"display_name\": \"Hyperbolic\",\n \"catalog_provider\": \"hyperbolic\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"HYPERBOLIC_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"hyperbolic\",\n \"provider\": \"hyperbolic\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"hyperbolic\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"inception\",\n \"display_name\": \"Inception\",\n \"catalog_provider\": \"inception\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"INCEPTION_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"inception:mercury-2\",\n \"provider\": \"inception\",\n \"model\": \"mercury-2\",\n \"display_name\": \"Mercury 2\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"inception\\\"\",\n \"model = \\\"mercury-2\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"llamacpp\",\n \"display_name\": \"llama.cpp server\",\n \"catalog_provider\": \"llamacpp\",\n \"endpoint_style\": \"OpenAI-compatible llama-server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"llamacpp-qwen3.6-q4\",\n \"provider\": \"llamacpp\",\n \"model\": \"qwen3.6-35b-a3b-ud-q4-k-xl\",\n \"display_name\": \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"llamacpp\\\"\",\n \"model = \\\"llamacpp-qwen3.6-q4\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"llama.cpp gets its own provider so Harn can model Qwen chat-template and thinking behavior separately from generic local OpenAI-compatible servers.\"\n ],\n \"caveats\": [\n \"Run both provider readiness and tool probes after changing GGUF, context, KV-cache, or chat-template settings.\",\n \"2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {\\\"enable_thinking\\\":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install local-qwen3.6-gguf` for the recommended download and launch commands.\"\n ]\n },\n {\n \"id\": \"local\",\n \"display_name\": \"OpenAI-compatible local server\",\n \"catalog_provider\": \"local\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"local-gemma4\",\n \"provider\": \"local\",\n \"model\": \"gemma-4-26b-a4b-it\",\n \"display_name\": \"Gemma 4 26B MoE (local)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"local\\\"\",\n \"model = \\\"local-gemma4\\\"\",\n \"tool_format = \\\"text\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"low\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Use this generic provider when a local server speaks OpenAI chat completions but does not need a provider-specific quirk profile.\"\n ],\n \"caveats\": [\n \"Prefer `llamacpp` or `mlx` when those runtimes are known, because their capability rows can encode template-specific behavior.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are exposed as OpenAI-compatible tool definitions unless the route is configured to prefer Harn text tools.\"\n ],\n \"local_setup_notes\": [\n \"Set `LOCAL_LLM_BASE_URL` and either `LOCAL_LLM_MODEL` or an explicit Harn model selector, then run `harn provider ready local`.\"\n ]\n },\n {\n \"id\": \"minimax\",\n \"display_name\": \"Minimax\",\n \"catalog_provider\": \"minimax\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MINIMAX_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"minimax:MiniMax-M2.5-highspeed\",\n \"provider\": \"minimax\",\n \"model\": \"MiniMax-M2.5-highspeed\",\n \"display_name\": \"MiniMax M2.5 (highspeed)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"minimax\\\"\",\n \"model = \\\"MiniMax-M2.5-highspeed\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mistral\",\n \"display_name\": \"Mistral via OpenRouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions through OpenRouter\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:mistralai/mistral-small-2603\",\n \"provider\": \"openrouter\",\n \"model\": \"mistralai/mistral-small-2603\",\n \"display_name\": \"Mistral Small 4\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"mistralai/mistral-small-2603\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Harn catalogs hosted Mistral routes through OpenRouter today, so endpoint and auth behavior are OpenAI-compatible.\",\n \"Use this row for Mistral-family recommendation surfaces until a direct Mistral provider is cataloged.\"\n ],\n \"caveats\": [\n \"Provider-native behavior depends on the OpenRouter model route; run the coding-agent benchmark before promoting it to a default for critical harnesses.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are rendered as OpenAI-compatible tool definitions on this route.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"mlx\",\n \"display_name\": \"MLX OpenAI-compatible server\",\n \"catalog_provider\": \"mlx\",\n \"endpoint_style\": \"OpenAI-compatible MLX server\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"mlx-qwen3.6\",\n \"provider\": \"mlx\",\n \"model\": \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\",\n \"display_name\": \"Qwen3.6 35B-A3B (MLX 4-bit)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"mlx\\\"\",\n \"model = \\\"mlx-qwen3.6\\\"\",\n \"tool_format = \\\"native\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"disable_directive:/no_think\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"medium\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"MLX routes use native tools only after the served identity and tool probe match the cataloged model.\"\n ],\n \"caveats\": [\n \"`mlx_lm.server` flags vary by release; launch first, then verify with `harn provider ready mlx`.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": [\n \"Run `harn models install mlx-qwen3.6` for the venv, download, launch, and verification commands.\"\n ]\n },\n {\n \"id\": \"moonshot\",\n \"display_name\": \"Moonshot\",\n \"catalog_provider\": \"moonshot\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"MOONSHOT_API_KEY\",\n \"MOONSHOT_AI_API_KEY\",\n \"KIMI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"moonshot:moonshot/kimi-k2.6\",\n \"provider\": \"moonshot\",\n \"model\": \"moonshot/kimi-k2.6\",\n \"display_name\": \"Kimi K2.6 (Moonshot direct)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"moonshot\\\"\",\n \"model = \\\"moonshot/kimi-k2.6\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nebius\",\n \"display_name\": \"Nebius\",\n \"catalog_provider\": \"nebius\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NEBIUS_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nebius\",\n \"provider\": \"nebius\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"nebius\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"nvidia\",\n \"display_name\": \"Nvidia\",\n \"catalog_provider\": \"nvidia\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"NVIDIA_API_KEY\",\n \"NIM_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"nvidia:nvidia/minimax-m2.7\",\n \"provider\": \"nvidia\",\n \"model\": \"nvidia/minimax-m2.7\",\n \"display_name\": \"MiniMax M2.7 (NVIDIA NIM)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"nvidia\\\"\",\n \"model = \\\"nvidia/minimax-m2.7\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"delimited\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"delimited\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"ollama\",\n \"display_name\": \"Ollama\",\n \"catalog_provider\": \"ollama\",\n \"endpoint_style\": \"Ollama native chat API\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"devstral-small-2\",\n \"provider\": \"ollama\",\n \"model\": \"devstral-small-2:24b\",\n \"display_name\": \"Devstral Small 2 24B\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"ollama\\\"\",\n \"model = \\\"devstral-small-2\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"thinking = \\\"off\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"json\",\n \"tool_mode_parity\": \"text_only\",\n \"structured_output_transport\": \"format_kw\",\n \"structured_output_mode\": \"delimited\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"Local Ollama model quality varies by template and quantization; Harn defaults known fragile routes to the text-tool contract.\",\n \"Use `harn provider tool-probe` receipts to promote aliases from unknown to native/text/disabled on a machine.\"\n ],\n \"caveats\": [\n \"Some Ollama native tool parsers reject otherwise valid text-mode model output; the capability table records those routes as text-only.\"\n ],\n \"mcp_notes\": [\n \"MCP tools are local Harn tools; prefer the text tool contract unless a probe proves native calls work for the installed model.\"\n ],\n \"local_setup_notes\": [\n \"Run `harn models install devstral-small-2`, then verify with `harn provider ready ollama --model `. For local qwen3.x, use the llamacpp provider (e.g. `local-qwen3.6`) — Ollama's qwen3.5-family tool-call parser 500s on text-tool output.\"\n ]\n },\n {\n \"id\": \"openai\",\n \"display_name\": \"OpenAI\",\n \"catalog_provider\": \"openai\",\n \"endpoint_style\": \"OpenAI chat completions / Responses-compatible routes\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openai:gpt-5.4-mini\",\n \"provider\": \"openai\",\n \"model\": \"gpt-5.4-mini\",\n \"display_name\": \"GPT-5.4 Mini\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openai\\\"\",\n \"model = \\\"gpt-5.4-mini\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [\n {\n \"id\": \"fast\",\n \"mode\": \"synchronous\",\n \"economics\": \"premium\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"fast\",\n \"discount_percent\": null,\n \"cost_multiplier\": 2.5,\n \"status\": \"ga\",\n \"latency\": \"lower latency and faster output than default serving\",\n \"reliability\": \"provider may downgrade or reject unavailable premium capacity\",\n \"suitable_workloads\": [],\n \"unsuitable_workloads\": [\n \"batch\"\n ],\n \"note\": \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\"\n },\n {\n \"id\": \"flex\",\n \"mode\": \"synchronous\",\n \"economics\": \"discounted\",\n \"request_param\": \"service_tier\",\n \"request_value\": \"flex\",\n \"discount_percent\": 50,\n \"cost_multiplier\": null,\n \"status\": \"beta\",\n \"latency\": \"slower and variable synchronous latency\",\n \"reliability\": \"best-effort availability; provider can return resource unavailable\",\n \"suitable_workloads\": [\n \"offline_eval\",\n \"corpus\",\n \"bulk_judge\"\n ],\n \"unsuitable_workloads\": [\n \"interactive_chat\"\n ],\n \"note\": \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\"\n }\n ],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [\n \"OpenAI-family routes default to native tool calls and native JSON structured output when the model row supports tools.\",\n \"Reasoning models use developer-role instructions and reasoning-summary transcript projection where the capability row declares it.\"\n ],\n \"caveats\": [\n \"Use explicit reasoning effort only on reasoning rows; non-reasoning chat models should keep thinking disabled.\"\n ],\n \"mcp_notes\": [\n \"Hosted MCP behavior is normalized through Harn tool definitions; provider-side hosted tools remain a separate provider feature.\"\n ],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"openrouter\",\n \"display_name\": \"Openrouter\",\n \"catalog_provider\": \"openrouter\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"OPENROUTER_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"openrouter:google/gemini-2.5-flash\",\n \"provider\": \"openrouter\",\n \"model\": \"google/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (via OpenRouter)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"openrouter\\\"\",\n \"model = \\\"google/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"parasail\",\n \"display_name\": \"Parasail\",\n \"catalog_provider\": \"parasail\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"PARASAIL_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"parasail\",\n \"provider\": \"parasail\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"parasail\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"qianfan\",\n \"display_name\": \"Qianfan\",\n \"catalog_provider\": \"qianfan\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"QIANFAN_API_KEY\",\n \"BAIDU_QIANFAN_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"qianfan\",\n \"provider\": \"qianfan\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"qianfan\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"sambanova\",\n \"display_name\": \"Sambanova\",\n \"catalog_provider\": \"sambanova\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SAMBANOVA_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"sambanova:sambanova/gpt-oss-120b\",\n \"provider\": \"sambanova\",\n \"model\": \"sambanova/gpt-oss-120b\",\n \"display_name\": \"GPT-OSS 120B (SambaNova)\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"sambanova\\\"\",\n \"model = \\\"sambanova/gpt-oss-120b\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): SambaNova native ended with a provider/tool-protocol failure (Harmony empty tool_calls / reasoning-channel-only class). Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"siliconflow\",\n \"display_name\": \"Siliconflow\",\n \"catalog_provider\": \"siliconflow\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"SILICONFLOW_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"siliconflow\",\n \"provider\": \"siliconflow\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"siliconflow\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"tgi\",\n \"display_name\": \"Tgi\",\n \"catalog_provider\": \"tgi\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"tgi\",\n \"provider\": \"tgi\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"tgi\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"together\",\n \"display_name\": \"Together\",\n \"catalog_provider\": \"together\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"TOGETHER_AI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"together:openai/gpt-oss-20b\",\n \"provider\": \"together\",\n \"model\": \"openai/gpt-oss-20b\",\n \"display_name\": \"GPT-OSS 20B (Together)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"together\\\"\",\n \"model = \\\"openai/gpt-oss-20b\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\"\n ],\n \"prompt_or_context_cache\": false,\n \"batch_api\": true,\n \"batch_discount_percent\": 50,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vercel_ai_gateway\",\n \"display_name\": \"Vercel AI Gateway\",\n \"catalog_provider\": \"vercel_ai_gateway\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"AI_GATEWAY_API_KEY\",\n \"VERCEL_AI_GATEWAY_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"vercel_ai_gateway:vercel/openai/gpt-5.4-nano\",\n \"provider\": \"vercel_ai_gateway\",\n \"model\": \"vercel/openai/gpt-5.4-nano\",\n \"display_name\": \"GPT-5.4 Nano (Vercel AI Gateway)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vercel_ai_gateway\\\"\",\n \"model = \\\"vercel/openai/gpt-5.4-nano\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"effort\",\n \"reasoning_effort\",\n \"reasoning_none\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vertex\",\n \"display_name\": \"Vertex\",\n \"catalog_provider\": \"vertex\",\n \"endpoint_style\": \"Gemini generateContent\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"VERTEX_AI_ACCESS_TOKEN\",\n \"GOOGLE_OAUTH_ACCESS_TOKEN\",\n \"GOOGLE_APPLICATION_CREDENTIALS\"\n ],\n \"recommended\": {\n \"selector\": \"vertex:vertex/gemini-2.5-flash\",\n \"provider\": \"vertex\",\n \"model\": \"vertex/gemini-2.5-flash\",\n \"display_name\": \"Gemini 2.5 Flash (Vertex AI)\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"vertex\\\"\",\n \"model = \\\"vertex/gemini-2.5-flash\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"vllm\",\n \"display_name\": \"Vllm\",\n \"catalog_provider\": \"vllm\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"local\",\n \"auth_env\": [],\n \"recommended\": {\n \"selector\": \"vllm\",\n \"provider\": \"vllm\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"vllm\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"local_zero_cost\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"volcengine_ark\",\n \"display_name\": \"Volcengine Ark\",\n \"catalog_provider\": \"volcengine_ark\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ARK_API_KEY\",\n \"VOLCENGINE_ARK_API_KEY\",\n \"VOLCENGINE_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"volcengine_ark\",\n \"provider\": \"volcengine_ark\",\n \"model\": \"*\",\n \"display_name\": null,\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"volcengine_ark\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": false,\n \"text_tools\": true,\n \"preferred_tool_format\": \"auto\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"none\",\n \"structured_output_mode\": \"none\",\n \"streaming\": true,\n \"reasoning_knobs\": [],\n \"prompt_or_context_cache\": false,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"provider_default\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"xai\",\n \"display_name\": \"Xai\",\n \"catalog_provider\": \"xai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"XAI_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"xai:grok-build-0.1\",\n \"provider\": \"xai\",\n \"model\": \"grok-build-0.1\",\n \"display_name\": \"Grok Build 0.1\",\n \"tool_format\": \"native\",\n \"harn_options\": [\n \"provider = \\\"xai\\\"\",\n \"model = \\\"grok-build-0.1\\\"\",\n \"tool_format = \\\"native\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"native\",\n \"tool_mode_parity\": \"unknown\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"adaptive\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": true,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n },\n {\n \"id\": \"zai\",\n \"display_name\": \"Zai\",\n \"catalog_provider\": \"zai\",\n \"endpoint_style\": \"OpenAI-compatible chat completions\",\n \"classification\": \"hosted\",\n \"auth_env\": [\n \"ZAI_API_KEY\",\n \"ZHIPU_API_KEY\"\n ],\n \"recommended\": {\n \"selector\": \"zai:glm-4.6\",\n \"provider\": \"zai\",\n \"model\": \"glm-4.6\",\n \"display_name\": \"GLM 4.6\",\n \"tool_format\": \"text\",\n \"harn_options\": [\n \"provider = \\\"zai\\\"\",\n \"model = \\\"glm-4.6\\\"\",\n \"tool_format = \\\"text\\\"\",\n \"structured_output_mode = \\\"native_json\\\"\"\n ]\n },\n \"capabilities\": {\n \"native_tools\": true,\n \"text_tools\": true,\n \"preferred_tool_format\": \"text\",\n \"tool_mode_parity\": \"native_unreliable\",\n \"structured_output_transport\": \"native\",\n \"structured_output_mode\": \"native_json\",\n \"streaming\": true,\n \"reasoning_knobs\": [\n \"enabled\"\n ],\n \"prompt_or_context_cache\": true,\n \"batch_api\": false,\n \"batch_discount_percent\": null,\n \"serving_tiers\": [],\n \"usage_accounting_confidence\": \"high\"\n },\n \"empirical\": {\n \"status\": \"not_recorded\",\n \"sources\": [],\n \"total_runs\": 0,\n \"passed_runs\": 0,\n \"failed_runs\": 0,\n \"skipped_runs\": 0,\n \"best_tool_format\": null,\n \"native_text_parity\": null,\n \"evidence\": []\n },\n \"notes\": [],\n \"caveats\": [\n \"Family-consistency pin: GLM native channels emit `` markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.\"\n ],\n \"mcp_notes\": [],\n \"local_setup_notes\": []\n }\n ]\n}\n"}}, "crates/harn-vm/src/llm/catalog_sources/10-providers/all.toml": {"ea46aaa36d1f0f3e66ffd93cb201732f51a58f82": {"t": 1785745339.8636596, "n": 24388, "h": "8b744808a8892278", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "74757e35a633cd0dd0c678ebdd46c6bc87527dde": {"t": 1785745384.121959, "n": 24388, "h": "8b744808a8892278", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "9ec13b6cbe39866e9a3678773e6630f4679fabf8": {"t": 1785750451.279163, "n": 24388, "h": "8b744808a8892278", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "2f25e1dc1161691f430b678109635ddb8ff0b863": {"t": 1785750452.8816512, "n": 24128, "h": "94d11689e4f5ed9b", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "39d5fb73c35affc1e838a3993e95c5e7ca88429f": {"t": 1785750454.100363, "n": 24101, "h": "bf7cd82dcfc06ffa", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "957b76e0f0a35bd6f647e7036c6aef3268bf9edc": {"t": 1785750455.4895542, "n": 24055, "h": "b3af845b467803b2", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "2f82153cf04db7c3ce18d6d51ed9df8e3ab6897f": {"t": 1785750465.1303728, "n": 23976, "h": "5a32d7b0713c52ea", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "5ca14277e616ab709f7f45688c91d6ee78a9b82f": {"t": 1785750467.7701843, "n": 24074, "h": "1950d2eaf51eff46", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "5dbb5f34c461b67db119ada44da59fd8809aea58": {"t": 1785750469.18535, "n": 18795, "h": "46290975aaa65d5f", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "939f985e8d9747a8e6fa397fd9fb3f74235b957a": {"t": 1785750470.3518183, "n": 18786, "h": "6372c3825656d0bd", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "544fe8f7bea96a9c47d15000ce87dd400b25663c": {"t": 1785750471.9008045, "n": 18749, "h": "eff9b0bac2022c4a", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "4725bfab28116841a080301a5a5e5d75110c70e5": {"t": 1785750473.2139094, "n": 18638, "h": "2bc6753f37249c43", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "af33cfae70824ac7c799c2354e86712e96a647c3": {"t": 1785750474.7865438, "n": 18552, "h": "ab4adf5ad2bea87f", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "8e562ab566f5e4512b61643187eed8330ca2f4a4": {"t": 1785750476.4372785, "n": 19045, "h": "a3da4e5fbcf19caf", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.5/4.6/4.7 and the GLM-5 line). The\n# working API base is `https://api.z.ai/api/paas/v4` (verified 2026-07-03:\n# glm-4.6 serves 200 there; the previously catalogued `.../v1` returned 404).\n# The endpoint speaks the OpenAI chat-completions wire format so the shared\n# openai_chat_completions path Just Works. A coding-plan mirror lives at\n# `.../api/coding/paas/v4`; default to paas/v4. Auth is bearer with the raw\n# ZAI_API_KEY token (the legacy `ZHIPU_API_KEY` env var is also accepted; the\n# `auth_env` array tries each in order).\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "1267b61dfdb74b26eef24d3233e2f06e08cf41e0": {"t": 1785750479.7617667, "n": 18856, "h": "80f514a22c1d4ea3", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.6, GLM-4.7). Z.AI publishes both a\n# native PaaS endpoint (`/api/paas/v4`) and an OpenAI-compatible endpoint\n# (`/v1`); Harn dials the OpenAI-compatible one so the existing\n# openai_chat_completions wire format Just Works. The provider also\n# accepts the legacy `ZHIPU_API_KEY` env var; callers can rely on the\n# `auth_env` array trying each in order.\n[providers.zai]\nbase_url = \"https://api.z.ai/v1\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "dcec82cf17940c39db05939a15b97c9d744643c8": {"t": 1785750481.1962678, "n": 19047, "h": "53490d1913cc6a78", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.6, GLM-4.7). Z.AI publishes both a\n# native PaaS endpoint (`/api/paas/v4`) and an OpenAI-compatible endpoint\n# (`/v1`); Harn dials the OpenAI-compatible one so the existing\n# openai_chat_completions wire format Just Works. The provider also\n# accepts the legacy `ZHIPU_API_KEY` env var; callers can rely on the\n# `auth_env` array trying each in order.\n[providers.zai]\nbase_url = \"https://api.z.ai/v1\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. OpenAI-compatible\n# `/v1/chat/completions`; the same models were previously only reachable\n# through OpenRouter/Together aggregator routes. Moonshot also exposes an\n# Anthropic-compatible `/anthropic` surface, but Harn dials the\n# OpenAI-compatible endpoint so the shared openai_chat_completions wire\n# format Just Works. Use the `.cn` base via MOONSHOT_BASE_URL for the\n# China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "c37f789dedbbef28b752d7caa0aa640e3ab29ab1": {"t": 1785750483.037136, "n": 14669, "h": "7350c0cd7931897b", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.6, GLM-4.7). Z.AI publishes both a\n# native PaaS endpoint (`/api/paas/v4`) and an OpenAI-compatible endpoint\n# (`/v1`); Harn dials the OpenAI-compatible one so the existing\n# openai_chat_completions wire format Just Works. The provider also\n# accepts the legacy `ZHIPU_API_KEY` env var; callers can rely on the\n# `auth_env` array trying each in order.\n[providers.zai]\nbase_url = \"https://api.z.ai/v1\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. OpenAI-compatible\n# `/v1/chat/completions`; the same models were previously only reachable\n# through OpenRouter/Together aggregator routes. Moonshot also exposes an\n# Anthropic-compatible `/anthropic` surface, but Harn dials the\n# OpenAI-compatible endpoint so the shared openai_chat_completions wire\n# format Just Works. Use the `.cn` base via MOONSHOT_BASE_URL for the\n# China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "f1cad5f01802fe990f006d087034ca6238ffb528": {"t": 1785750487.3662877, "n": 13968, "h": "0933abaec85aa5d1", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.6, GLM-4.7). Z.AI publishes both a\n# native PaaS endpoint (`/api/paas/v4`) and an OpenAI-compatible endpoint\n# (`/v1`); Harn dials the OpenAI-compatible one so the existing\n# openai_chat_completions wire format Just Works. The provider also\n# accepts the legacy `ZHIPU_API_KEY` env var; callers can rely on the\n# `auth_env` array trying each in order.\n[providers.zai]\nbase_url = \"https://api.z.ai/v1\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. OpenAI-compatible\n# `/v1/chat/completions`; the same models were previously only reachable\n# through OpenRouter/Together aggregator routes. Moonshot also exposes an\n# Anthropic-compatible `/anthropic` surface, but Harn dials the\n# OpenAI-compatible endpoint so the shared openai_chat_completions wire\n# format Just Works. Use the `.cn` base via MOONSHOT_BASE_URL for the\n# China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n"}, "a595bf04e6bc4294ecd75dec8f75bd2657fe7ed7": {"t": 1785750488.875402, "n": 11491, "h": "b07519085581cea0", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.6, GLM-4.7). Z.AI publishes both a\n# native PaaS endpoint (`/api/paas/v4`) and an OpenAI-compatible endpoint\n# (`/v1`); Harn dials the OpenAI-compatible one so the existing\n# openai_chat_completions wire format Just Works. The provider also\n# accepts the legacy `ZHIPU_API_KEY` env var; callers can rely on the\n# `auth_env` array trying each in order.\n[providers.zai]\nbase_url = \"https://api.z.ai/v1\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n"}, "8d0762babfe2bf2167d85fdf39dc264d5e93f8e8": {"t": 1786067354.57742, "n": 24388, "h": "8b744808a8892278", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}, "7f1f18a86dd2445da376be770ca7616597c40212": {"t": 1786068235.470371, "n": 24388, "h": "8b744808a8892278", "c": "# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n"}}, "crates/harn-vm/src/llm/providers.toml": {"ea46aaa36d1f0f3e66ffd93cb201732f51a58f82": {"t": 1785745352.0646791, "n": 229985, "h": "6502b3d0002c2ce1", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-30 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"up to 2.5x faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 4.00, output_per_mtok = 24.00, cache_read_per_mtok = 0.40, cache_write_per_mtok = 5.00 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 0.40, output_per_mtok = 2.40, cache_read_per_mtok = 0.04, cache_write_per_mtok = 0.50 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 0.10, output_per_mtok = 0.60, cache_read_per_mtok = 0.01, cache_write_per_mtok = 0.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob. OpenAI renamed Priority\n# processing to Fast mode on 2026-07-30; both `fast` and `priority` request\n# values are accepted, while GPT-5.6 and earlier responses echo `priority`.\n# GPT-5.5 bills this tier at 2.5x standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group. The rows retain\n# OpenRouter's undiscounted public base rates; its current 50%-off promotion is\n# intentionally excluded from the durable catalog.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "74757e35a633cd0dd0c678ebdd46c6bc87527dde": {"t": 1785745384.6746655, "n": 229985, "h": "6502b3d0002c2ce1", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-30 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"up to 2.5x faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 4.00, output_per_mtok = 24.00, cache_read_per_mtok = 0.40, cache_write_per_mtok = 5.00 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 0.40, output_per_mtok = 2.40, cache_read_per_mtok = 0.04, cache_write_per_mtok = 0.50 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 0.10, output_per_mtok = 0.60, cache_read_per_mtok = 0.01, cache_write_per_mtok = 0.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob. OpenAI renamed Priority\n# processing to Fast mode on 2026-07-30; both `fast` and `priority` request\n# values are accepted, while GPT-5.6 and earlier responses echo `priority`.\n# GPT-5.5 bills this tier at 2.5x standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group. The rows retain\n# OpenRouter's undiscounted public base rates; its current 50%-off promotion is\n# intentionally excluded from the durable catalog.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "9f1d3683495791f5d8903829f9647e33ec2e90fb": {"t": 1785750453.0463629, "n": 229985, "h": "6502b3d0002c2ce1", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-30 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"up to 2.5x faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 4.00, output_per_mtok = 24.00, cache_read_per_mtok = 0.40, cache_write_per_mtok = 5.00 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 0.40, output_per_mtok = 2.40, cache_read_per_mtok = 0.04, cache_write_per_mtok = 0.50 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 0.10, output_per_mtok = 0.60, cache_read_per_mtok = 0.01, cache_write_per_mtok = 0.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob. OpenAI renamed Priority\n# processing to Fast mode on 2026-07-30; both `fast` and `priority` request\n# values are accepted, while GPT-5.6 and earlier responses echo `priority`.\n# GPT-5.5 bills this tier at 2.5x standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group. The rows retain\n# OpenRouter's undiscounted public base rates; its current 50%-off promotion is\n# intentionally excluded from the durable catalog.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "9ec13b6cbe39866e9a3678773e6630f4679fabf8": {"t": 1785750456.699066, "n": 229394, "h": "a1f7ebe71fd06418", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "2f25e1dc1161691f430b678109635ddb8ff0b863": {"t": 1785750462.1683803, "n": 229134, "h": "a24265d13aebd88e", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "39d5fb73c35affc1e838a3993e95c5e7ca88429f": {"t": 1785750464.2230456, "n": 228365, "h": "8e3fb51f4833014c", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "80378696d7be628a21f96dbd710a28bd652fdf38": {"t": 1785750468.7761025, "n": 227484, "h": "0957aa296ab35b91", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "ee9a1a3d9d9d593fe19bcc951e24a7a5082ebee2": {"t": 1785750470.8733735, "n": 227376, "h": "73c1d054fb1be4d2", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "38067db78929b04af08a9dab2ef6968cc8649d26": {"t": 1785750472.861549, "n": 224273, "h": "f0ed5eac14e54ff9", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "7bd54dc4c2f5682536fa3645ab229170359e27c9": {"t": 1785750475.7047894, "n": 224067, "h": "6461695f73b4cbec", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "4010a834bc6b17b591fefccb0571f32c2b71c965": {"t": 1785750477.497403, "n": 223982, "h": "aea97328b0e38bc6", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "957b76e0f0a35bd6f647e7036c6aef3268bf9edc": {"t": 1785750479.2625093, "n": 222979, "h": "5fb9bcf220fe7d83", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "44cbe875d5e76dcd4a64a3ae2c559e38ec1383d0": {"t": 1785750485.5820258, "n": 220075, "h": "1cc2c65f3f93964d", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"json\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "8f61c92369360441e2a6b9aed5a18be24270b2d8": {"t": 1785750488.002789, "n": 218778, "h": "e622afac7c8b6503", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "14fbd2e53dca9e3dc69cdbbb2dcfae2412a8595d": {"t": 1785750490.2810738, "n": 218762, "h": "f63aab4109aa1066", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "cdb210a2c63ba06b5ebac33093024e392a7409fb": {"t": 1785750493.6096704, "n": 217429, "h": "4a81f6aa86810f9b", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "6bb9907119906cad780486d7e392be6e889be37e": {"t": 1785750495.8824744, "n": 217223, "h": "20f9befb630124ee", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "644e359d6964f73d11dc6f21db24d80357b7d350": {"t": 1785750497.8459623, "n": 216337, "h": "61bd211458a0d857", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "cd544ee71e2936b3f69332dd2e325e7a755b242d": {"t": 1785750501.477754, "n": 216174, "h": "5b8626df6da7adca", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "7b00f0f269cddaa09663ed2cab31dac62583c880": {"t": 1785750503.0909736, "n": 211766, "h": "b8ce85d6ba0340bf", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "2ae4acfbca45ba2e08faa015d99379926fa2bced": {"t": 1785750504.9925356, "n": 205246, "h": "7569818c72c3b1fa", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-10 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 1.25, output_per_mtok = 7.50, cache_read_per_mtok = 0.125, cache_write_per_mtok = 1.5625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }, latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"provider may downgrade unavailable priority capacity\", unsuitable_workloads = [\"batch\"] },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"ga\", pricing = { input_per_mtok = 0.50, output_per_mtok = 3.00, cache_read_per_mtok = 0.05, cache_write_per_mtok = 0.625 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "9e2a6d9927d6bec65e4a3b16845b77b20863d922": {"t": 1785750506.88115, "n": 199757, "h": "f09f55fa44f98f55", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "2f82153cf04db7c3ce18d6d51ed9df8e3ab6897f": {"t": 1785750508.501369, "n": 200859, "h": "3c4a6d75cef2c703", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "5ca14277e616ab709f7f45688c91d6ee78a9b82f": {"t": 1785750510.2481508, "n": 200957, "h": "651342a98233cbff", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# Groq compound systems.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n# Direct Moonshot legacy route kept for pinned callers.\n[model_defaults.\"moonshot/kimi-k2.5\"]\n# Live Moonshot API probe on 2026-07-09 rejected other temperatures:\n# `invalid temperature: only 1 is allowed for this model`.\ntemperature = 1.0\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "5dbb5f34c461b67db119ada44da59fd8809aea58": {"t": 1785750512.8709702, "n": 179214, "h": "47a0060dfbacc37e", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\" }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"Codex fast mode rides the same service_tier request surface as OpenAI priority processing. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"priority\", label = \"Priority processing\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, cost_multiplier = 2.5, status = \"ga\", latency = \"lower and more consistent latency for user-facing traffic\", reliability = \"shares standard rate limits and can be downgraded during ramp or congestion\", unsuitable_workloads = [\"batch\"], note = \"Response service_tier is the authoritative billing signal when provider-side downgrade occurs.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "939f985e8d9747a8e6fa397fd9fb3f74235b957a": {"t": 1785750514.73235, "n": 170655, "h": "32bbe311e4a04b92", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "18d696b4cfc3249eb6b984f2ffa263ff25c939b2": {"t": 1785750517.7336652, "n": 170618, "h": "3397595523f67de8", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "544fe8f7bea96a9c47d15000ce87dd400b25663c": {"t": 1785750519.7127185, "n": 170134, "h": "7faea059ff7a5562", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "b576f714b4f71c43c972cac0bcfcfa31d6142f44": {"t": 1785750521.7215264, "n": 170023, "h": "e275ab078fa565e5", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "4725bfab28116841a080301a5a5e5d75110c70e5": {"t": 1785750524.415588, "n": 169060, "h": "6d1727553c25355b", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n"}, "af33cfae70824ac7c799c2354e86712e96a647c3": {"t": 1785750529.0502508, "n": 168974, "h": "7e4e59e3565037bd", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n"}, "8e562ab566f5e4512b61643187eed8330ca2f4a4": {"t": 1785750533.1482034, "n": 170016, "h": "20ee8bae98d0faa3", "c": "# @generated by `harn provider catalog build-config`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog build-config` concatenates these fragments into\n# llm/providers.toml, which deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog build-config` and `harn provider catalog export`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n\n[providers.anthropic]\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"POST\"\npath = \"/messages/count_tokens\"\nbody = '{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"x\"}]}'\n\n[providers.openai]\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — host of the GLM family (GLM-4.5/4.6/4.7 and the GLM-5 line). The\n# working API base is `https://api.z.ai/api/paas/v4` (verified 2026-07-03:\n# glm-4.6 serves 200 there; the previously catalogued `.../v1` returned 404).\n# The endpoint speaks the OpenAI chat-completions wire format so the shared\n# openai_chat_completions path Just Works. A coding-plan mirror lives at\n# `.../api/coding/paas/v4`; default to paas/v4. Auth is bearer with the raw\n# ZAI_API_KEY token (the legacy `ZHIPU_API_KEY` env var is also accepted; the\n# `auth_env` array tries each in order).\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works. Use the `.cn` base via\n# MOONSHOT_BASE_URL for the China region.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes. Set SILICONFLOW_BASE_URL to the\n# regional `.cn` endpoint when needed.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-chat\"\nprovider = \"deepseek\"\n\n[[inference_rules]]\npattern = \"deepseek-reasoner\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias intentionally stays on claude-opus-4-8.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work. Qwen 3.6 Flash\n# matched Plus on the 2026-07-02 Harn/OpenRouter structured JSON + native-tool\n# + text-tool smoke matrix while landing materially lower latency and token\n# price. OpenAI stays addressable through the provider-scoped tier alias below.\n[aliases.mid]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.4-mini\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`\n# text-channel capability row's `json` (fenced-JSON) default. json's ```tool\n# fence sidesteps the reserved token (so the reserved-token remap\n# stays correct) and is delimiter-safe vs heredoc. To force heredoc, set\n# `tool_format = \"text\"`.\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\ntool_format = \"native\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `< 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" }\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nfast_mode = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\", otps_speedup = 2.5, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" }\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-02 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: gpt-5.5 / gpt-5.5-pro flagship, the gpt-5.4 tier family\n# (base/mini/nano), and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob: Codex exposes it as\n# \"Fast mode\" (service_tier = \"fast\", ~1.5x faster output) and the API\n# as priority processing (service_tier = \"priority\"); both bill at 2.5x\n# standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nfast_mode = { param = \"service_tier\", value = \"fast\", otps_speedup = 1.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, note = \"Codex \\\"Fast mode\\\" (service_tier=\\\"fast\\\", ~1.5x faster output) and API priority processing (service_tier=\\\"priority\\\") both bill at 2.5x standard. Not offered for long-context, fine-tuned models, or embeddings.\" }\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 12.00, cache_read_per_mtok = 1.50 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder (Apache-2.0), trained\n# against 21 tool schemas (92.7% schema-following per the tech report).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# OpenRouter `/api/v1/models` live snapshot on 2026-07-02 reports\n# $0.93/$3.00 per MTok and native `reasoning_effort` support. A 2026-07-03\n# refresh reports input_cache_read at $0.18/MTok.\npricing = { input_per_mtok = 0.93, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. `deepseek-chat`/`deepseek-reasoner` are retained as deprecated\n# aliases on V4-Flash (non-thinking) and V4-Flash thinking-mode\n# respectively; per provider notes they retire 2026-07-24.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n[models.\"deepseek-chat\"]\nname = \"DeepSeek Chat (legacy → V4 Flash, non-thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash non-thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\"]\n[models.\"deepseek-reasoner\"]\nname = \"DeepSeek Reasoner (legacy → V4 Flash, thinking)\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ndeprecated = true\ndeprecation_note = \"Maps to deepseek-v4-flash thinking mode; retirement 2026-07-24 15:59 UTC per provider docs.\"\n\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\ntier = \"reasoning\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\"]\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n"}, "8d0762babfe2bf2167d85fdf39dc264d5e93f8e8": {"t": 1786067357.7476778, "n": 229985, "h": "6502b3d0002c2ce1", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-30 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"up to 2.5x faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 4.00, output_per_mtok = 24.00, cache_read_per_mtok = 0.40, cache_write_per_mtok = 5.00 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 0.40, output_per_mtok = 2.40, cache_read_per_mtok = 0.04, cache_write_per_mtok = 0.50 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 0.10, output_per_mtok = 0.60, cache_read_per_mtok = 0.01, cache_write_per_mtok = 0.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob. OpenAI renamed Priority\n# processing to Fast mode on 2026-07-30; both `fast` and `priority` request\n# values are accepted, while GPT-5.6 and earlier responses echo `priority`.\n# GPT-5.5 bills this tier at 2.5x standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group. The rows retain\n# OpenRouter's undiscounted public base rates; its current 50%-off promotion is\n# intentionally excluded from the durable catalog.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}, "7f1f18a86dd2445da376be770ca7616597c40212": {"t": 1786068236.1932173, "n": 229985, "h": "6502b3d0002c2ce1", "c": "# @generated by `harn provider catalog generate`; do not edit directly.\n# Edit crates/harn-vm/src/llm/catalog_sources/**/*.toml instead.\n\n# --- source: 00-base.toml ---\n# Harn's built-in LLM provider/model catalog source fragments.\n#\n# The files under catalog_sources/ are the source of truth for Harn's\n# bundled defaults:\n# providers, model aliases, inference + tier routing rules, canonical\n# model metadata + pricing, qc defaults, and per-pattern hyperparameter\n# overrides. `harn provider catalog generate` concatenates these fragments into\n# llm/providers.toml and every checked-in provider catalog projection. The\n# provider TOML deserializes into `ProvidersConfig` via the same\n# Serde pipeline that loads HARN_PROVIDERS_CONFIG /\n# ~/.config/harn/providers.toml / harn.toml [providers] /\n# package-manifest [llm] sections at runtime.\n#\n# Resolution order at startup (later overlays win on per-key basis):\n# 1. Generated llm/providers.toml (embedded into the VM via include_str!)\n# 2. ~/.config/harn/providers.toml (user-global override)\n# 3. HARN_PROVIDERS_CONFIG env var (explicit per-process override)\n# 4. Per-run programmatic overlays installed by hosts via\n# llm_config::set_user_overrides()\n#\n# Edit these fragments to change defaults, then run\n# `harn provider catalog generate`. Do not re-add\n# equivalent data as Rust literals in llm_config.rs — that creates the\n# parallel system this catalog exists to eliminate.\n\ndefault_provider = \"anthropic\"\n\n# --- source: 10-providers/all.toml ---\n# ── Providers ────────────────────────────────────────────────────────────────\n# Each [providers.X] block defines an LLM endpoint Harn can dial. The\n# `auth_env` field can be a single string or an array (tried in order).\n# `cost_per_1k_in/out` are coarse provider-level fallbacks used when a\n# specific [models.X] entry has no `pricing` table.\n# `cache_usage_accounting` records whether zero cache fields are a real miss.\n\n[providers.anthropic]\ncache_usage_accounting = true\nbase_url = \"https://api.anthropic.com/v1\"\nauth_style = \"header\"\nauth_header = \"x-api-key\"\nauth_env = \"ANTHROPIC_API_KEY\"\nchat_endpoint = \"/messages\"\nfeatures = [\"prompt_caching\", \"thinking\", \"batch\"]\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2500\nextra_headers = { \"anthropic-version\" = \"2023-06-01\" }\n\n[providers.anthropic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openai]\ncache_usage_accounting = true\nbase_url = \"https://api.openai.com/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1800\n\n[providers.openai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.openrouter]\ncache_usage_accounting = true\nbase_url = \"https://openrouter.ai/api/v1\"\nauth_style = \"bearer\"\nauth_env = \"OPENROUTER_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.003\ncost_per_1k_out = 0.015\nlatency_p50_ms = 2200\n\n[providers.openrouter.healthcheck]\nmethod = \"GET\"\npath = \"/auth/key\"\n\n[providers.huggingface]\nbase_url = \"https://router.huggingface.co/v1\"\nauth_style = \"bearer\"\nauth_env = [\"HF_TOKEN\", \"HUGGINGFACE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 2400\n\n[providers.huggingface.healthcheck]\nmethod = \"GET\"\nurl = \"https://huggingface.co/api/whoami-v2\"\n\n# Ollama defaults to /api/chat (native NDJSON) so the test stubs keep\n# working; hosts can flip to /v1/chat/completions via a providers.toml\n# overlay to bypass Ollama's per-model tool-call post-processors\n# (qwen3coder.go, qwen35.go) that raise HTTP 500s on text-mode responses\n# for the Qwen3.5 family.\n[providers.ollama]\ncache_usage_accounting = false\nbase_url = \"http://localhost:11434\"\nbase_url_env = \"OLLAMA_HOST\"\nauth_style = \"none\"\nchat_endpoint = \"/api/chat\"\ncompletion_endpoint = \"/api/generate\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 1200\n\n[providers.ollama.healthcheck]\nmethod = \"GET\"\npath = \"/api/tags\"\n\n[providers.gemini]\nbase_url = \"https://generativelanguage.googleapis.com\"\nbase_url_env = \"GEMINI_BASE_URL\"\nauth_style = \"header\"\nauth_header = \"x-goog-api-key\"\nauth_env = [\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\"]\nchat_endpoint = \"/v1beta/models\"\nfeatures = [\"batch\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 1800\n\n[providers.gemini.healthcheck]\nmethod = \"GET\"\npath = \"/v1beta/models\"\n\n[providers.mistral]\nbase_url = \"https://api.mistral.ai/v1\"\nbase_url_env = \"MISTRAL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MISTRAL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0005\ncost_per_1k_out = 0.0015\nlatency_p50_ms = 1800\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.mistral.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.cohere]\nbase_url = \"https://api.cohere.ai/compatibility/v1\"\nbase_url_env = \"COHERE_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"COHERE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.cohere.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.xai]\nbase_url = \"https://api.x.ai/v1\"\nbase_url_env = \"XAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"XAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.001\ncost_per_1k_out = 0.002\nlatency_p50_ms = 1600\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"batch\"]\n\n[providers.xai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.together]\nbase_url = \"https://api.together.xyz/v1\"\nbase_url_env = \"TOGETHER_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"TOGETHER_AI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1600\nfeatures = [\"batch\"]\n\n[providers.together.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Groq — OpenAI-compatible LPU-hosted fast inference. Headline ~840 tok/s\n# on Llama 3.1 8B, ~594 tok/s on Llama 4 Scout. Useful executor target\n# when sub-100ms TTFT matters more than raw quality.\n[providers.groq]\nbase_url = \"https://api.groq.com/openai/v1\"\nbase_url_env = \"GROQ_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GROQ_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0001\ncost_per_1k_out = 0.0003\nlatency_p50_ms = 450\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.groq.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cerebras — OpenAI-compatible wafer-scale inference. High token throughput\n# makes it a strong fit for latency-budgeted binder workloads; end-to-end\n# p50 still includes client/provider round-trip time, so callers should keep\n# their own wall-clock budget. Provider-level pricing here is a coarse\n# default; per-model rows under [models.X] hold the authoritative numbers\n# from Cerebras's public model discovery endpoint.\n[providers.cerebras]\nbase_url = \"https://api.cerebras.ai/v1\"\nbase_url_env = \"CEREBRAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"CEREBRAS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00035\ncost_per_1k_out = 0.00075\nlatency_p50_ms = 150\nfeatures = [\"native_tools\"]\n\n[providers.cerebras.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.deepseek]\ncache_usage_accounting = true\nbase_url = \"https://api.deepseek.com/v1\"\nbase_url_env = \"DEEPSEEK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"DEEPSEEK_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.00014\ncost_per_1k_out = 0.00028\nlatency_p50_ms = 1800\n\n[providers.deepseek.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.fireworks]\nbase_url = \"https://api.fireworks.ai/inference/v1\"\nbase_url_env = \"FIREWORKS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FIREWORKS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1400\nfeatures = [\"batch\"]\n\n[providers.fireworks.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n[providers.dashscope]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nbase_url_env = \"DASHSCOPE_BASE_URL\"\nregion_env = \"DASHSCOPE_REGION\"\nauth_style = \"bearer\"\nauth_env = \"DASHSCOPE_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0003\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 1600\n\n[providers.dashscope.regions.intl]\nbase_url = \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\"\nlabel = \"International\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.regions.cn]\nbase_url = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\nlabel = \"China\"\nsource_url = \"https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope\"\nlast_verified = \"2026-07-09\"\n\n[providers.dashscope.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# MiniMax — OpenAI-compatible endpoint for MiniMax M2/M3 models. The direct\n# API serves MiniMax-M3 plus the open-weight M2 family on the same\n# /v1/chat/completions URL; the wire format mirrors OpenAI chat completions\n# with native tool calls and model-specific thinking controls.\n[providers.minimax]\nbase_url = \"https://api.minimax.io/v1\"\nbase_url_env = \"MINIMAX_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"MINIMAX_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0024\nlatency_p50_ms = 1700\n\n[providers.minimax.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Z.AI — OpenAI-compatible GLM API. Override `ZAI_BASE_URL` for custom plans.\n[providers.zai]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nbase_url_env = \"ZAI_BASE_URL\"\nregion_env = \"ZAI_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"ZAI_API_KEY\", \"ZHIPU_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0004\ncost_per_1k_out = 0.0017\nlatency_p50_ms = 1900\n\n[providers.zai.regions.global]\nbase_url = \"https://api.z.ai/api/paas/v4\"\nlabel = \"Global\"\nsource_url = \"https://docs.z.ai/guides/start/quickstart\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.regions.cn]\nbase_url = \"https://open.bigmodel.cn/api/paas/v4\"\nlabel = \"China\"\nsource_url = \"https://bigmodel.cn/dev/api/normal-model/glm-4\"\nlast_verified = \"2026-07-09\"\n\n[providers.zai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Moonshot AI — first-party host of the Kimi K2 family. Harn dials the\n# OpenAI-compatible `/v1/chat/completions` endpoint so the shared\n# openai_chat_completions wire format Just Works.\n[providers.moonshot]\nbase_url = \"https://api.moonshot.ai/v1\"\nbase_url_env = \"MOONSHOT_BASE_URL\"\nregion_env = \"MOONSHOT_REGION\"\nauth_style = \"bearer\"\nauth_env = [\"MOONSHOT_API_KEY\", \"MOONSHOT_AI_API_KEY\", \"KIMI_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0025\nlatency_p50_ms = 1900\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\n\n[providers.moonshot.regions.global]\nbase_url = \"https://api.moonshot.ai/v1\"\nlabel = \"Global\"\nsource_url = \"https://platform.moonshot.ai/docs/intro\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.regions.cn]\nbase_url = \"https://api.moonshot.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://platform.moonshot.cn/docs\"\nlast_verified = \"2026-07-09\"\n\n[providers.moonshot.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baseten Model APIs — OpenAI-compatible serverless inference for current\n# open-weight frontier models. Baseten's GLM-5.2 route is optimized with\n# Blackwell, KV-aware routing, prefill/decode disaggregation, and speculative\n# decoding; catalog rows use a `baseten/` prefix so the same weights\n# can be compared against Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n[providers.baseten]\nbase_url = \"https://inference.baseten.co/v1\"\nbase_url_env = \"BASETEN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"BASETEN_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0014\ncost_per_1k_out = 0.0044\nlatency_p50_ms = 800\nfeatures = [\"native_tools\", \"reasoning\", \"prompt_caching\"]\nrate_limits = { rpm = 15, tpm = 100000, tier = \"basic_unverified\", source_url = \"https://docs.baseten.co/inference/model-apis/rate-limits-and-budgets\", last_verified = \"2026-06-23\", notes = \"Conservative default. Baseten also publishes Basic verified at 120 RPM / 500k TPM, Pro at 120 RPM / 1M TPM, and custom Enterprise limits.\" }\n\n[providers.baseten.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# DeepInfra — OpenAI-compatible host for open-weight models (DeepSeek,\n# Qwen, Llama, Kimi, GPT-OSS, Gemma). The compat surface lives under the\n# `/v1/openai` path prefix, so the base_url carries it and chat_endpoint\n# stays the standard `/chat/completions`. Catalog rows are keyed with a\n# `deepinfra/` prefix and carry `wire_model` so they stay\n# collision-free with the bare/openrouter ids for the same weights.\n[providers.deepinfra]\nbase_url = \"https://api.deepinfra.com/v1/openai\"\nbase_url_env = \"DEEPINFRA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"DEEPINFRA_API_KEY\", \"DEEPINFRA_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0002\ncost_per_1k_out = 0.0006\nlatency_p50_ms = 1500\nfeatures = [\"native_tools\"]\n\n[providers.deepinfra.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SambaNova Cloud — OpenAI-compatible RDU-hosted inference with very high\n# token throughput on large open-weight models (DeepSeek, Llama 4, Qwen).\n# A latency-budgeted executor target alongside Groq/Cerebras with a\n# different model mix. Catalog rows use a `sambanova/` prefix +\n# `wire_model` so they don't collide with other hosts of the same weights.\n[providers.sambanova]\nbase_url = \"https://api.sambanova.ai/v1\"\nbase_url_env = \"SAMBANOVA_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"SAMBANOVA_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\ncost_per_1k_in = 0.0006\ncost_per_1k_out = 0.0012\nlatency_p50_ms = 350\nfeatures = [\"native_tools\"]\n\n[providers.sambanova.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# NVIDIA NIM — OpenAI-compatible hosted inference through the NVIDIA API\n# Catalog. Use NVIDIA_NIM_BASE_URL for self-hosted NIM or enterprise\n# gateways; the generic NVIDIA_BASE_URL is intentionally not consumed here\n# because common examples set it to the host root, while the OpenAI-compatible\n# API lives under /v1.\n[providers.nvidia]\nbase_url = \"https://integrate.api.nvidia.com/v1\"\nbase_url_env = \"NVIDIA_NIM_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"NVIDIA_API_KEY\", \"NIM_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nlatency_p50_ms = 1400\nfeatures = [\"native_tools\"]\n\n[providers.nvidia.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Nebius Token Factory — OpenAI-compatible hosted inference for agentic\n# open-weight models. Public docs advertise native function calling and JSON\n# structured output; live per-model facts should come from /models/model cards.\n[providers.nebius]\nbase_url = \"https://api.tokenfactory.nebius.com/v1\"\nbase_url_env = \"NEBIUS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"NEBIUS_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.nebius.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# FlexAI Token Factory — OpenAI-compatible API with model-discovery metadata\n# for context windows, pricing, health, and support flags.\n[providers.flexai]\nbase_url = \"https://tokens.flex.ai/v1\"\nbase_url_env = \"FLEXAI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"FLEXAI_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\", \"vision\"]\n\n[providers.flexai.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Hyperbolic — OpenAI-compatible inference with documented function calling\n# on current Qwen/Llama coding-agent routes.\n[providers.hyperbolic]\nbase_url = \"https://api.hyperbolic.xyz/v1\"\nbase_url_env = \"HYPERBOLIC_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"HYPERBOLIC_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\nrate_limits = { rpm = 60, tier = \"basic\", source_url = \"https://www.hyperbolic.ai/docs/inference/text-apis\", last_verified = \"2026-06-23\", notes = \"Docs also publish a 600 RPM Pro tier after account upgrade/deposit; this row records the conservative default tier.\" }\n\n[providers.hyperbolic.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# SiliconFlow — OpenAI-compatible hosted inference for inexpensive DeepSeek,\n# Qwen, GLM, and other open-weight routes.\n[providers.siliconflow]\nbase_url = \"https://api.siliconflow.com/v1\"\nbase_url_env = \"SILICONFLOW_BASE_URL\"\nregion_env = \"SILICONFLOW_REGION\"\nauth_style = \"bearer\"\nauth_env = \"SILICONFLOW_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.siliconflow.regions.global]\nbase_url = \"https://api.siliconflow.com/v1\"\nlabel = \"Global\"\nsource_url = \"https://docs.siliconflow.com/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.regions.cn]\nbase_url = \"https://api.siliconflow.cn/v1\"\nlabel = \"China\"\nsource_url = \"https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions\"\nlast_verified = \"2026-07-09\"\n\n[providers.siliconflow.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Parasail — OpenAI-compatible serverless and batch API. Batch jobs are\n# particularly useful for offline eval/replay workloads where latency is not\n# on the critical path.\n[providers.parasail]\nbase_url = \"https://api.parasail.io/v1\"\nbase_url_env = \"PARASAIL_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"PARASAIL_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"batch\"]\n\n[providers.parasail.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Atlas Cloud — OpenAI-compatible coding-plan/provider surface that overlaps\n# GLM, Kimi, DeepSeek, Qwen, and MiniMax families.\n[providers.atlas]\nbase_url = \"https://api.atlascloud.ai/v1\"\nbase_url_env = \"ATLAS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ATLAS_API_KEY\", \"ATLASCLOUD_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.atlas.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# GitHub Models — OpenAI-compatible inference over GitHub's model catalog.\n[providers.github_models]\nbase_url = \"https://models.github.ai/inference\"\nbase_url_env = \"GITHUB_MODELS_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"GITHUB_MODELS_TOKEN\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.github_models.healthcheck]\nmethod = \"GET\"\nurl = \"https://models.github.ai/catalog/models\"\n\n# Vercel AI Gateway — one OpenAI-compatible endpoint for providers routed\n# through a Vercel project.\n[providers.vercel_ai_gateway]\ndisplay_name = \"Vercel AI Gateway\"\nbase_url = \"https://ai-gateway.vercel.sh/v1\"\nbase_url_env = \"VERCEL_AI_GATEWAY_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"AI_GATEWAY_API_KEY\", \"VERCEL_AI_GATEWAY_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\", \"prompt_caching\", \"wire_model_capabilities\"]\n\n[providers.vercel_ai_gateway.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Cloudflare Workers AI / AI Gateway — OpenAI-compatible path is scoped by\n# account id. Set CLOUDFLARE_AI_BASE_URL to the concrete account/gateway URL.\n[providers.cloudflare_ai_gateway]\nbase_url = \"https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1\"\nbase_url_env = \"CLOUDFLARE_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"CLOUDFLARE_API_TOKEN\", \"CLOUDFLARE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\", \"reasoning\"]\n\n# Inception Labs — diffusion LLM APIs exposed through OpenAI-compatible chat.\n[providers.inception]\nbase_url = \"https://api.inceptionlabs.ai/v1\"\nbase_url_env = \"INCEPTION_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = \"INCEPTION_API_KEY\"\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\", \"reasoning\"]\n\n[providers.inception.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Friendli Serverless Endpoints — OpenAI-compatible chat/completions.\n[providers.friendli]\nbase_url = \"https://api.friendli.ai/serverless/v1\"\nbase_url_env = \"FRIENDLI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"FRIENDLI_API_KEY\", \"FRIENDLI_TOKEN\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.friendli.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Volcengine Ark — OpenAI-compatible ByteDance model serving endpoint.\n[providers.volcengine_ark]\nbase_url = \"https://ark.cn-beijing.volces.com/api/v3\"\nbase_url_env = \"VOLCENGINE_ARK_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"ARK_API_KEY\", \"VOLCENGINE_ARK_API_KEY\", \"VOLCENGINE_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"responses_api\", \"native_tools\"]\n\n[providers.volcengine_ark.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Tencent Hunyuan — OpenAI-compatible `/v1/chat/completions` endpoint.\n[providers.hunyuan]\nbase_url = \"https://api.hunyuan.cloud.tencent.com/v1\"\nbase_url_env = \"HUNYUAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"HUNYUAN_API_KEY\", \"TENCENT_HUNYUAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.hunyuan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# Baidu Qianfan v2 — OpenAI-compatible endpoint with tool-calling support.\n[providers.qianfan]\nbase_url = \"https://qianfan.baidubce.com/v2\"\nbase_url_env = \"QIANFAN_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"QIANFAN_API_KEY\", \"BAIDU_QIANFAN_API_KEY\"]\nchat_endpoint = \"/chat/completions\"\ncompletion_endpoint = \"/completions\"\nfeatures = [\"native_tools\"]\n\n[providers.qianfan.healthcheck]\nmethod = \"GET\"\npath = \"/models\"\n\n# AWS Bedrock — resolves credentials through env, profile, container, or\n# EC2 instance roles, then signs Converse API calls with SigV4.\n[providers.bedrock]\nbase_url = \"https://bedrock-runtime.{region}.amazonaws.com\"\nbase_url_env = \"BEDROCK_BASE_URL\"\nauth_style = \"aws_sigv4\"\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/model/{model}/converse\"\nfeatures = [\"native_tools\"]\nlatency_p50_ms = 2600\n\n# Azure OpenAI — deployment name is routed in the URL; callers can\n# either pass the deployment as the Harn model field or set\n# AZURE_OPENAI_DEPLOYMENT.\n[providers.azure_openai]\nbase_url = \"https://{resource}.openai.azure.com\"\nbase_url_env = \"AZURE_OPENAI_ENDPOINT\"\nauth_style = \"azure_openai\"\nauth_env = [\"AZURE_OPENAI_API_KEY\", \"AZURE_OPENAI_AD_TOKEN\", \"AZURE_OPENAI_BEARER_TOKEN\"]\nchat_endpoint = \"/openai/deployments/{deployment}/chat/completions?api-version={api_version}\"\nfeatures = [\"native_tools\", \"batch\"]\ncost_per_1k_in = 0.0025\ncost_per_1k_out = 0.010\nlatency_p50_ms = 1900\n\n[providers.vertex]\nbase_url = \"https://aiplatform.googleapis.com/v1\"\nbase_url_env = \"VERTEX_AI_BASE_URL\"\nauth_style = \"bearer\"\nauth_env = [\"VERTEX_AI_ACCESS_TOKEN\", \"GOOGLE_OAUTH_ACCESS_TOKEN\", \"GOOGLE_APPLICATION_CREDENTIALS\"]\ncredential_resolution = \"platform_managed\"\nchat_endpoint = \"/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent\"\nfeatures = [\"native_tools\", \"wire_model_capabilities\"]\ncost_per_1k_in = 0.00125\ncost_per_1k_out = 0.005\nlatency_p50_ms = 2100\n\n[providers.local]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"LOCAL_LLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.local.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# llama.cpp — separate from `local` so capability rules can isolate Qwen\n# chat-template thinking quirks from other local OpenAI-compatible hosts.\n[providers.llamacpp]\ncache_usage_accounting = false\nbase_url = \"http://127.0.0.1:8001\"\nbase_url_env = \"LLAMACPP_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.llamacpp.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n# Apple Silicon MLX. Harn owns readiness probing; hosts that want\n# script-based auto-start should launch the process first, then call\n# Harn again to verify readiness.\n[providers.mlx]\nbase_url = \"http://127.0.0.1:8002\"\nbase_url_env = \"MLX_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 900\n\n[providers.mlx.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.vllm]\nbase_url = \"http://localhost:8000\"\nbase_url_env = \"VLLM_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 800\n\n[providers.vllm.healthcheck]\nmethod = \"GET\"\npath = \"/v1/models\"\n\n[providers.tgi]\nbase_url = \"http://localhost:8080\"\nbase_url_env = \"TGI_BASE_URL\"\nauth_style = \"none\"\nchat_endpoint = \"/v1/chat/completions\"\ncompletion_endpoint = \"/v1/completions\"\ncost_per_1k_in = 0.0\ncost_per_1k_out = 0.0\nlatency_p50_ms = 950\n\n[providers.tgi.healthcheck]\nmethod = \"GET\"\npath = \"/health\"\n\n# --- source: 12-local-runtime/lifecycle.toml ---\n# Local runtime lifecycle metadata for `harn local`.\n# These rows describe provider mechanics, not machine-specific model paths.\n\n[providers.local.local_runtime]\nkind = \"external\"\nwire_protocol = \"open_ai_compatible\"\ndefault_port = 8000\nstop = \"external\"\nnotes = \"User-managed generic OpenAI-compatible local endpoint. Harn can inspect and select it, but does not launch or stop its process.\"\n\n[providers.ollama.local_runtime]\nkind = \"daemon_api\"\nwire_protocol = \"ollama_api\"\ncommand = \"ollama\"\ndefault_port = 11434\nstop = \"keep_alive_zero\"\nsource_url = \"https://github.com/ollama/ollama/blob/main/docs/api.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"Load via Ollama generate/chat warmup; unload by posting an empty prompt with keep_alive=0.\"\n\n[providers.llamacpp.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"llama-server\"\nmodel_source_env = \"LLAMACPP_MODEL\"\ndefault_port = 8001\nmodel_arg = \"--model\"\nserved_model_arg = \"--alias\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--ctx-size\"\nparallel_arg = \"--parallel\"\ngpu_layers_arg = \"--n-gpu-layers\"\ncache_type_k_arg = \"--cache-type-k\"\ncache_type_v_arg = \"--cache-type-v\"\ncache_ram_arg = \"--cache-ram\"\nchat_template_kwargs_arg = \"--chat-template-kwargs\"\njinja_arg = \"--jinja\"\nreasoning_arg = \"--reasoning\"\nreasoning_format_arg = \"--reasoning-format\"\nflash_attn_arg = \"--flash-attn\"\nmetrics_arg = \"--metrics\"\ndefault_args = [\"--jinja\", \"--reasoning\", \"off\", \"--reasoning-format\", \"deepseek\", \"--metrics\", \"--flash-attn\", \"on\"]\nstop = \"pid\"\nsource_url = \"https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-compatible HTTP server. Use --model-source or LLAMACPP_MODEL for the GGUF path; Harn records the launched PID for local stop.\"\n\n[providers.mlx.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"mlx_lm.server\"\nmodel_source_env = \"MLX_MODEL\"\ndefault_port = 8002\nmodel_arg = \"--model\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md\"\nlast_verified = \"2026-06-05\"\nnotes = \"OpenAI-like MLX-LM server. Use --model-source or MLX_MODEL for an MLX-compatible path or Hugging Face repo id.\"\n\n[providers.vllm.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"vllm\"\nprefix_args = [\"serve\"]\nmodel_source_env = \"VLLM_MODEL\"\ndefault_port = 8000\nmodel_arg = \"--model\"\nserved_model_arg = \"--served-model-name\"\nhost_arg = \"--host\"\nport_arg = \"--port\"\nctx_arg = \"--max-model-len\"\nenable_lora_arg = \"--enable-lora\"\nlora_modules_arg = \"--lora-modules\"\nlora_modules_value_format = \"json_with_base_model\"\nmax_lora_rank_arg = \"--max-lora-rank\"\nstop = \"pid\"\nsource_url = \"https://docs.vllm.ai/en/stable/cli/serve/\"\nlast_verified = \"2026-07-02\"\nnotes = \"OpenAI-compatible vLLM server. `harn local launch --lora-adapter name=path` maps to vLLM's startup LoRA module flags with base-model lineage so the adapter appears as a request model.\"\n\n[providers.tgi.local_runtime]\nkind = \"managed_process\"\nwire_protocol = \"open_ai_compatible\"\ncommand = \"text-generation-launcher\"\nmodel_source_env = \"TGI_MODEL\"\ndefault_port = 8080\nmodel_arg = \"--model-id\"\nhost_arg = \"--hostname\"\nport_arg = \"--port\"\nstop = \"pid\"\nsource_url = \"https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_cli\"\nlast_verified = \"2026-07-17\"\nnotes = \"OpenAI-compatible Hugging Face Text Generation Inference server. Use --model-source or TGI_MODEL for the Hugging Face model id or local model directory; Harn records the launched PID for local stop.\"\n\n# --- source: 20-routing/inference.toml ---\n# ── Inference rules ──────────────────────────────────────────────────────────\n# Map a model ID shape to a default provider when the caller doesn't\n# specify one. First match wins. User overlays prepend, so they can\n# preempt these defaults without removing them.\n\n[[inference_rules]]\npattern = \"claude-*\"\nprovider = \"anthropic\"\n\n[[inference_rules]]\npattern = \"gpt-*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o1*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o3*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"o4*\"\nprovider = \"openai\"\n\n[[inference_rules]]\npattern = \"anthropic.claude-*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"meta.llama*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"amazon.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"mistral.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"cohere.*\"\nprovider = \"bedrock\"\n\n[[inference_rules]]\npattern = \"gemini-*\"\nprovider = \"gemini\"\n\n[[inference_rules]]\npattern = \"mistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"devstral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"codestral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"magistral-*\"\nprovider = \"mistral\"\n\n[[inference_rules]]\npattern = \"command-*\"\nprovider = \"cohere\"\n\n[[inference_rules]]\npattern = \"grok-*\"\nprovider = \"xai\"\n\n[[inference_rules]]\npattern = \"groq/*\"\nprovider = \"groq\"\n\n# Cerebras model IDs come back as bare names (\"gpt-oss-120b\",\n# \"llama-3.3-70b\") from /v1/models, so callers slash-prefix\n# them as \"cerebras/\" to disambiguate from OpenRouter's\n# one-slash convention. Match the prefix before the generic\n# single-slash rule routes it elsewhere.\n[[inference_rules]]\npattern = \"cerebras/*\"\nprovider = \"cerebras\"\n\n# Baseten catalog rows carry `baseten//` ids so they don't\n# collide with the same native IDs on Z.AI, Together, DeepInfra, or OpenRouter.\n[[inference_rules]]\npattern = \"baseten/*\"\nprovider = \"baseten\"\n\n# DashScope catalog rows carry `dashscope/` ids for the same reason\n# (the bare `qwen3.6-35b-a3b` id belongs to the llamacpp route).\n[[inference_rules]]\npattern = \"dashscope/*\"\nprovider = \"dashscope\"\n\n# MiniMax — released-name canonical IDs (capital-M) sit on the direct\n# API. OpenRouter mirrors the same family under `minimax/*` slugs; that\n# routing is handled by the generic slash-prefix rule.\n[[inference_rules]]\npattern = \"MiniMax-*\"\nprovider = \"minimax\"\n\n# Z.AI — GLM family. Bare IDs (\"glm-5\", \"glm-5.1\") dial the direct\n# OpenAI-compatible Z.AI endpoint; `zhipu/*` is accepted as a legacy\n# prefix some packagers still use.\n[[inference_rules]]\npattern = \"glm-*\"\nprovider = \"zai\"\n\n[[inference_rules]]\npattern = \"zhipu/*\"\nprovider = \"zai\"\n\n# DeepSeek — V4 family. The direct API uses bare IDs while OpenRouter\n# slugs them as `deepseek/*`; only the bare form needs an inference\n# rule because slash-prefixed IDs hit the generic OpenRouter rule.\n[[inference_rules]]\npattern = \"deepseek-v4*\"\nprovider = \"deepseek\"\n\n# --- source: 20-routing/tier-defaults.toml ---\n# ── Tier defaults ────────────────────────────────────────────────────────────\n# Tier is self-declared on each model row via `tier = \"small\" | \"mid\" |\n# \"frontier\" | \"reasoning\"`. The legacy pattern-based [[tier_rules]] table\n# has been removed; the catalog is the single source of truth. Models\n# without an explicit `tier` resolve to `tier_defaults.default`.\n#\n# Picking the right value for a row is a judgement call with real downstream\n# effects. See \"Choosing a tier\" in ../README.md before setting one.\n\n[tier_defaults]\ndefault = \"mid\"\n\n# --- source: 30-aliases/aliases.toml ---\n# ── Aliases ──────────────────────────────────────────────────────────────────\n# Short symbolic names → (model id, provider, optional tool_format). The\n# tier-resolution path (`resolve_tier_model(\"frontier\", None)`) reads\n# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let\n# callers force a specific resolution per provider.\n\n# Short flagship aliases — these track whatever the current\n# generation is. Bump these when a successor lands.\n[aliases.sonnet]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.sonnet5]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Previous Sonnet generation, kept addressable for pinned workflows.\n[aliases.sonnet46]\nid = \"claude-sonnet-4-6\"\nprovider = \"anthropic\"\n\n[aliases.opus]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n[aliases.opus5]\nid = \"claude-opus-5\"\nprovider = \"anthropic\"\n\n# Previous Opus generation, kept addressable for pinned workflows.\n[aliases.opus48]\nid = \"claude-opus-4-8\"\nprovider = \"anthropic\"\n\n# Fable is the Mythos-class tier above Opus, not an Opus successor — the\n# `opus` alias tracks the current Opus generation (claude-opus-5), not Fable.\n[aliases.fable]\nid = \"claude-fable-5\"\nprovider = \"anthropic\"\n\n[aliases.haiku]\nid = \"claude-haiku-4-5-20251001\"\nprovider = \"anthropic\"\n\n[aliases.frontier]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n[aliases.\"tier/frontier\"]\nid = \"claude-sonnet-5\"\nprovider = \"anthropic\"\n\n# Default balanced hosted route for routine coding-agent work.\n[aliases.mid]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/mid\"]\nid = \"qwen/qwen3-coder-next\"\nprovider = \"openrouter\"\n\n[aliases.\"openai/mid\"]\nid = \"gpt-5.6-terra\"\nprovider = \"openai\"\n\n[aliases.\"openai/frontier\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n[aliases.\"openai/small\"]\nid = \"gpt-5.6-luna\"\nprovider = \"openai\"\n\n# Preserve OpenAI's public family alias while resolving to the explicit tier\n# for stable catalog metadata, receipts, and cost projections.\n[aliases.\"gpt-5.6\"]\nid = \"gpt-5.6-sol\"\nprovider = \"openai\"\n\n# The small tier default stays on an open-weight host by policy (see\n# test_resolve_tier_model_default_aliases). Was Qwen/Qwen3.5-9B on\n# OpenRouter — that route went stale (Burin suppresses it); Gemma 4\n# 26B-A4B on OpenRouter is the current cheap open-weight default\n# ($0.06/$0.33, 4B active params, native tools).\n[aliases.small]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.\"tier/small\"]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).\n[aliases.local-gemma4]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-26b]\nid = \"gemma-4-26b-a4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-31b]\nid = \"gemma-4-31b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e4b]\nid = \"gemma-4-e4b-it\"\nprovider = \"local\"\n\n[aliases.local-gemma4-e2b]\nid = \"gemma-4-e2b-it\"\nprovider = \"local\"\n\n[aliases.ollama-gemma4]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-26b]\nid = \"gemma4:26b\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b]\nid = \"gemma4:12b-mlx\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.ollama-gemma4-12b-nvfp4]\nid = \"gemma4:12b-nvfp4\"\nprovider = \"ollama\"\ntool_format = \"text\"\n\n[aliases.local-gemma4-12b]\nid = \"gemma-4-12b-it\"\nprovider = \"local\"\n\n# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API\n# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.\n[aliases.gemini-gemma4-31b]\nid = \"models/gemma-4-31b-it\"\nprovider = \"gemini\"\n\n[aliases.gemini-gemma4-26b]\nid = \"models/gemma-4-26b-a4b-it\"\nprovider = \"gemini\"\n\n[aliases.openrouter-gemma4-31b]\nid = \"google/gemma-4-31b-it\"\nprovider = \"openrouter\"\n\n[aliases.openrouter-gemma4-26b]\nid = \"google/gemma-4-26b-a4b-it\"\nprovider = \"openrouter\"\n\n[aliases.together-gemma4-31b]\nid = \"google/gemma-4-31B-it\"\nprovider = \"together\"\n\n# Kimi via OpenRouter. Keep the short alias on the current code-focused route;\n# the full model id remains available for callers that want explicit slugs.\n[aliases.\"kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kimi-k2.7-code\"]\nid = \"moonshotai/kimi-k2.7-code\"\nprovider = \"openrouter\"\n\n# Kimi via Moonshot's first-party API. Native tool calls are reliable on\n# the direct route, so pin `native`.\n[aliases.\"kimi-direct\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi\"]\nid = \"moonshot/kimi-k2.6\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k3\"]\nid = \"moonshot/kimi-k3\"\nprovider = \"moonshot\"\ntool_format = \"native\"\n\n[aliases.\"moonshot-kimi-k2.7-code\"]\nid = \"moonshot/kimi-k2.7-code\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n[aliases.\"moonshot-kimi-k2.7-code-highspeed\"]\nid = \"moonshot/kimi-k2.7-code-highspeed\"\nprovider = \"moonshot\"\ntool_format = \"json\"\n\n# DeepInfra — open-weight OpenAI-compatible host.\n[aliases.\"deepinfra-deepseek\"]\nid = \"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n[aliases.\"deepinfra-glm-5.2\"]\nid = \"deepinfra/zai-org/GLM-5.2\"\nprovider = \"deepinfra\"\ntool_format = \"json\"\n\n[aliases.\"deepinfra-kimi-k2.7-code\"]\nid = \"deepinfra/moonshotai/Kimi-K2.7-Code\"\nprovider = \"deepinfra\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native bills empty / json flaky,\n# heredoc text 5/5 byte-clean. Route is native_unreliable; pin text.\n[aliases.\"deepinfra-qwen3.6\"]\nid = \"deepinfra/Qwen/Qwen3.6-35B-A3B\"\nprovider = \"deepinfra\"\ntool_format = \"text\"\n\n# Baseten Model APIs. GLM-5.x currently emits tool XML in assistant content on\n# `tool_choice=required` in Harn smoke probes, so pin GLM aliases to the text\n# grammar. Kimi, DeepSeek, GPT-OSS, and Nemotron returned OpenAI `tool_calls`.\n[aliases.\"baseten-glm-5.2\"]\nid = \"baseten/zai-org/GLM-5.2\"\nprovider = \"baseten\"\ntool_format = \"text\"\n\n[aliases.\"baseten-kimi-k2.7-code\"]\nid = \"baseten/moonshotai/Kimi-K2.7-Code\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-deepseek-v4-pro\"]\nid = \"baseten/deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-ultra\"]\nid = \"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-nemotron-super\"]\nid = \"baseten/nvidia/Nemotron-120B-A12B\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n[aliases.\"baseten-gpt-oss-120b\"]\nid = \"baseten/openai/gpt-oss-120b\"\nprovider = \"baseten\"\ntool_format = \"native\"\n\n# SambaNova Cloud — fast RDU inference.\n[aliases.\"sambanova-deepseek\"]\nid = \"sambanova/DeepSeek-V3.2\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n[aliases.\"sambanova-llama\"]\nid = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\nprovider = \"sambanova\"\ntool_format = \"native\"\n\n# probed 2026-06-24 (provider-tool-mode-sweep): native AND fenced-JSON both\n# corrupt backslash bodies (0/5), heredoc text 5/5 byte-clean. Pin text.\n[aliases.\"sambanova-minimax-m2.7\"]\nid = \"sambanova/MiniMax-M2.7\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# gpt-oss (Harmony) native channel is a footgun on the SambaNova pay-per-token\n# route (empty tool_calls / reasoning-channel-only); the route is pinned to TEXT\n# in 37-sambanova.toml, so this alias pins `text` to match (a `native` pin would\n# auto-correct anyway).\n[aliases.\"sambanova-gpt-oss-120b\"]\nid = \"sambanova/gpt-oss-120b\"\nprovider = \"sambanova\"\ntool_format = \"text\"\n\n# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it\n# exposes both Max and Plus; Together currently serves only Max.\n[aliases.\"qwen3.7\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-max\"]\nid = \"qwen/qwen3.7-max\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.7-plus\"]\nid = \"qwen/qwen3.7-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"together-qwen3.7-max\"]\nid = \"Qwen/Qwen3.7-Max\"\nprovider = \"together\"\n\n# Qwen 3.6 via OpenRouter. These route through Harn capability rows that keep\n# provider-native tools, disable Qwen reasoning automatically for tool-bearing\n# turns, and deny the OpenRouter Ambient upstream for structured tool calls.\n[aliases.\"qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-flash\"]\nid = \"qwen/qwen3.6-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-plus\"]\nid = \"qwen/qwen3.6-plus\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-qwen3.6-35b\"]\nid = \"qwen/qwen3.6-35b-a3b\"\nprovider = \"openrouter\"\n\n# OpenRouter-only coding specialist.\n[aliases.\"kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-kat-coder-pro-v2\"]\nid = \"kwaipilot/kat-coder-pro-v2\"\nprovider = \"openrouter\"\n\n# Together mirror of DeepSeek V4 Pro.\n[aliases.\"together-deepseek\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n[aliases.\"together-deepseek-v4-pro\"]\nid = \"deepseek-ai/DeepSeek-V4-Pro\"\nprovider = \"together\"\n\n# StepFun long-context agent route via OpenRouter.\n[aliases.\"step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n[aliases.\"openrouter-step-3.7-flash\"]\nid = \"stepfun/step-3.7-flash\"\nprovider = \"openrouter\"\n\n# Together mirrors for current GLM/MiniMax agent routes.\n[aliases.\"together-glm-5.1\"]\nid = \"zai-org/GLM-5.1\"\nprovider = \"together\"\n\n[aliases.\"together-glm-5.2\"]\nid = \"zai-org/GLM-5.2\"\nprovider = \"together\"\n\n[aliases.\"together-minimax-m2.7\"]\nid = \"MiniMaxAI/MiniMax-M2.7\"\nprovider = \"together\"\n\n# NVIDIA NIM.\n[aliases.\"nvidia-nemotron-ultra\"]\nid = \"nvidia/nemotron-3-ultra-550b-a55b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-super\"]\nid = \"nvidia/nemotron-3-super-120b-a12b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-nemotron-nano\"]\nid = \"nvidia/nemotron-3-nano-30b-a3b\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-deepseek-v4-pro\"]\nid = \"nvidia/deepseek-v4-pro\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-minimax-m3\"]\nid = \"nvidia/minimax-m3\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n[aliases.\"nvidia-kimi-k2.6\"]\nid = \"nvidia/kimi-k2.6\"\nprovider = \"nvidia\"\ntool_format = \"native\"\n\n# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side\n# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).\n# Use the llamacpp provider for local qwen3.x.\n\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n# No `tool_format` pin on any llama.cpp qwen3.6 alias: they all inherit the\n# `*qwen3.6*` capability row's native default (re-promoted 2026-07-18 — see that\n# row's tool_mode_parity_notes and harn#5162), matching the mlx/vLLM siblings\n# that serve the same weights. To force the text channel instead, set\n# `tool_format = \"text\"` (heredoc) or `\"json\"` (fenced-JSON, whose ```tool fence\n# sidesteps the reserved token so the reserved-token remap stays\n# correct).\n[aliases.\"llamacpp-qwen3.6\"]\nid = \"qwen3.6-35b-a3b\"\nprovider = \"llamacpp\"\n\n[aliases.\"llamacpp-qwen3.6-q4\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n[aliases.\"local-qwen3.6-gguf\"]\nid = \"qwen3.6-35b-a3b-ud-q4-k-xl\"\nprovider = \"llamacpp\"\n\n# MLX (Apple Silicon). Local MLX routes use the coding-tuned Qwen3.6-35B-A3B\n# MoE served via `mlx_lm.server` (burin #2717). Keep every MLX alias pointed at\n# live MoE weights so `auto`/preset selection lands on real weights. These\n# share the `qwen3.6-35b-a3b` equivalence_group with the llama.cpp GGUF route,\n# so eval aggregation compares the two runtimes directly.\n[aliases.\"mlx-qwen3.6\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-q8\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"\nprovider = \"mlx\"\n\n# Back-compat: the old 27B alias names resolve to the live 35B-A3B MoE so any\n# pinned config keeps working instead of pointing at non-existent weights.\n[aliases.mlx-qwen36-27b]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"mlx-qwen3.6-27b-q4\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n[aliases.\"local-qwen3.6-27b\"]\nid = \"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"\nprovider = \"mlx\"\n\n# MiniMax direct API aliases.\n[aliases.minimax]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2\"]\nid = \"MiniMax-M2\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.5\"]\nid = \"MiniMax-M2.5\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m2.7\"]\nid = \"MiniMax-M2.7\"\nprovider = \"minimax\"\n\n[aliases.\"minimax-m3\"]\nid = \"MiniMax-M3\"\nprovider = \"minimax\"\n\n# Z.AI GLM aliases. GLM-5.x native channel emits `` markup instead of\n# OpenAI message.tool_calls (see 98-zai.toml + the Baseten probe), so the zai\n# GLM-5 rows are pinned to TEXT; these aliases pin `text` to match.\n[aliases.glm]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"glm-5\"]\nid = \"glm-5\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.1\"]\nid = \"glm-5.1\"\nprovider = \"zai\"\n\n[aliases.\"glm-5.2\"]\nid = \"glm-5.2\"\nprovider = \"zai\"\ntool_format = \"text\"\n\n[aliases.\"openrouter-glm-5.2\"]\nid = \"z-ai/glm-5.2\"\nprovider = \"openrouter\"\ntool_format = \"text\"\n\n# DeepSeek V4 direct API aliases.\n[aliases.deepseek]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-flash\"]\nid = \"deepseek-v4-flash\"\nprovider = \"deepseek\"\n\n[aliases.\"deepseek-v4-pro\"]\nid = \"deepseek-v4-pro\"\nprovider = \"deepseek\"\n\n[aliases.cohere]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.\"command-a-plus\"]\nid = \"command-a-plus-05-2026\"\nprovider = \"cohere\"\n\n[aliases.grok]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.5-latest\"]\nid = \"grok-4.5\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.\"grok-4.3\"]\nid = \"grok-4.3\"\nprovider = \"xai\"\ntool_format = \"native\"\n\n[aliases.grok-code]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n[aliases.\"grok-code-fast\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# The provider-published logical id resolves through the same alias path as the\n# short selectors. Tool format remains capability-owned.\n[aliases.\"grok-code-fast-1\"]\nid = \"grok-build-0.1\"\nprovider = \"xai\"\n\n# Devstral (Mistral's agentic-coding tune).\n# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability\n# row's `json` (fenced-JSON) text-channel default. devstral has no\n# reserved-token constraint, so json is delimiter-safe and avoids heredoc's\n# `<`.\n\n# OpenAI's GPT-OSS reference configuration recommends neutral sampling and\n# high reasoning effort for maximum coding/reasoning quality. Every hosted\n# route below shares `logical_model = \"openai-gpt-oss-120b\"`; provider-specific\n# wire translation remains owned by the capability registry.\n# https://huggingface.co/openai/gpt-oss-120b/discussions/21\n[model_defaults.\"logical:openai-gpt-oss-120b\"]\ntemperature = 1.0\ntop_p = 1.0\nreasoning_effort = \"high\"\n\n# Baseten's managed GPT-OSS route does not expose nucleus sampling. Keep the\n# remaining logical defaults while omitting the unsupported field at the route\n# boundary. https://docs.baseten.co/inference/model-apis/overview\n[model_defaults.\"baseten/openai/gpt-oss-120b\"]\n_unset = [\"top_p\"]\n\n# Groq compound systems publish an 8192-token completion ceiling.\n[model_defaults.\"groq/compound*\"]\nmax_tokens = 8192\n\n# Moonshot's direct Kimi K2.5 route accepts only temperature 1.\n[model_defaults.\"moonshot/kimi-k2.5\"]\ntemperature = 1.0\n\n# K3 always reasons and accepts only its maximum effort setting. Sampling is\n# omitted by the capability row; this default selects the required effort\n# without leaking Moonshot-specific request logic into callers.\n[model_defaults.\"moonshot/kimi-k3\"]\nreasoning_effort = \"max\"\n\n# --- source: 40-defaults/qc.toml ---\n# ── QC defaults ──────────────────────────────────────────────────────────────\n# Default low-cost model per provider for cheap quality-check / repair\n# passes. Scripts read these via `qc_default_model(provider)`.\n\n[qc_defaults]\nanthropic = \"claude-haiku-4-5-20251001\"\nopenai = \"gpt-5.6-luna\"\nopenrouter = \"google/gemini-2.5-flash\"\nollama = \"llama3.2\"\n# `local` previously pointed at gpt-4o — a hosted (and now sunset)\n# OpenAI model that no local OpenAI-compat server would serve. Use the\n# bundled vLLM Gemma 4 route instead.\nlocal = \"gemma-4-26b-a4b-it\"\nmistral = \"mistral-small-2603\"\ncohere = \"command-a-plus-05-2026\"\nxai = \"grok-build-0.1\"\ngroq = \"llama-3.1-8b-instant\"\nminimax = \"MiniMax-M2.5-highspeed\"\n# GLM-4.6 is Z.AI's cheap coding route, confirmed serving at paas/v4.\nzai = \"glm-4.6\"\ndeepseek = \"deepseek-v4-flash\"\ngemini = \"gemini-2.5-flash-lite\"\n\n# --- source: 50-presentation/00-model-selection.toml ---\n# Host-facing model-selection metadata. These rows describe presentation only;\n# they do not change routing, defaults, escalation, or request parameters.\n\n[presentation.variants.fast]\norder = 10\nlabel = \"Fast\"\ndescription = \"Lowest-latency general route for quick, routine work.\"\nselector = { kind = \"alias\", name = \"small\" }\n\n[presentation.variants.balanced]\norder = 20\nlabel = \"Balanced\"\ndescription = \"Default cost and capability trade-off for everyday work.\"\nselector = { kind = \"alias\", name = \"mid\" }\n\n[presentation.variants.high-reasoning]\norder = 30\nlabel = \"High reasoning\"\ndescription = \"Most capable route for difficult planning, repair, and review.\"\nselector = { kind = \"alias\", name = \"frontier\" }\n\n[presentation.variants.local]\norder = 40\nlabel = \"Local\"\ndescription = \"Largest-context local or offline route in this catalog.\"\nselector = { kind = \"best_local\" }\n\n[presentation.variants.cheap]\norder = 50\nlabel = \"Cheap\"\ndescription = \"Lowest known hosted input-plus-output token price.\"\nselector = { kind = \"cheapest_hosted\" }\n\n[presentation.variants.vision-capable]\norder = 60\nlabel = \"Vision capable\"\ndescription = \"Largest-context route that accepts image input.\"\nselector = { kind = \"largest_vision_context\" }\n\n[presentation.variants.long-context]\norder = 70\nlabel = \"Long context\"\ndescription = \"Largest context-window route in this catalog.\"\nselector = { kind = \"largest_context\" }\n\n[presentation.families.openai-gpt-5-6]\nlabel = \"GPT-5.6\"\nplain_description = \"Choose a model size and how much time it spends reasoning.\"\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"variant\"\nlabel = \"Model size\"\nplain_description = \"Larger variants trade speed and cost for more capability.\"\nkind = \"model\"\nordered_values = [\n { value = \"luna\", label = \"Luna\", plain_description = \"Fastest and lowest cost for routine work.\", relative_cost_hint = 1, relative_speed_hint = 5, model_id = \"gpt-5.6-luna\" },\n { value = \"terra\", label = \"Terra\", plain_description = \"Balanced capability, speed, and cost.\", relative_cost_hint = 3, relative_speed_hint = 3, model_id = \"gpt-5.6-terra\" },\n { value = \"sol\", label = \"Sol\", plain_description = \"Most capable and most expensive for difficult work.\", relative_cost_hint = 5, relative_speed_hint = 1, model_id = \"gpt-5.6-sol\" },\n]\n\n[[presentation.families.openai-gpt-5-6.dimensions]]\nkey = \"effort\"\nlabel = \"Thinking time\"\nplain_description = \"More thinking time can improve difficult answers but takes longer and costs more.\"\nkind = \"reasoning_effort\"\nordered_values = [\n { value = \"none\", label = \"None\", plain_description = \"Respond directly without extra reasoning.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"low\", label = \"Low\", plain_description = \"Brief reasoning for straightforward work.\", relative_cost_hint = 1, relative_speed_hint = 5 },\n { value = \"medium\", label = \"Medium\", plain_description = \"Balanced reasoning for everyday work.\", relative_cost_hint = 2, relative_speed_hint = 4 },\n { value = \"high\", label = \"High\", plain_description = \"More reasoning for difficult tasks.\", relative_cost_hint = 3, relative_speed_hint = 3 },\n { value = \"xhigh\", label = \"Extra high\", plain_description = \"Deep reasoning for complex tasks.\", relative_cost_hint = 4, relative_speed_hint = 2 },\n { value = \"max\", label = \"Maximum\", plain_description = \"Most reasoning for the hardest tasks.\", relative_cost_hint = 5, relative_speed_hint = 1 },\n]\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"fast\"\nlabel = \"Fast\"\nplain_blurb = \"Quick, low-cost responses for routine edits and questions.\"\ncoordinates = { variant = \"luna\", effort = \"low\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"balanced\"\nlabel = \"Balanced\"\nplain_blurb = \"A practical default for everyday coding and analysis.\"\ncoordinates = { variant = \"terra\", effort = \"medium\" }\n\n[[presentation.families.openai-gpt-5-6.presets]]\nid = \"deep\"\nlabel = \"Deep\"\nplain_blurb = \"Maximum capability and reasoning for the hardest work.\"\ncoordinates = { variant = \"sol\", effort = \"max\" }\n\n# --- source: 60-models/00-anthropic.toml ---\n# ── Models ───────────────────────────────────────────────────────────────────\n# Canonical model metadata: display name, provider, context window,\n# capabilities, pricing (USD per 1M tokens), and deprecation status.\n# Pricing reflects public provider pages snapshotted at the comment\n# beside each section; edit the literal here and the change shows up in\n# `git blame`.\n\n# Anthropic ─ pricing pages: https://www.anthropic.com/pricing &\n# https://platform.claude.com/docs/en/about-claude/model-deprecations.\n# Verified 2026-07-02 against the provider /v1/models API and the\n# deprecations page: Sonnet 4 / Opus 4 are retired, Opus 4.1 is deprecated\n# (retires 2026-08-05), Opus 3 is retired, dated Sonnet 4.5 remains active,\n# and Sonnet 5 joined the lineup. Since the 4.6 generation the full 1M-token\n# context window ships at standard per-token pricing (no long-context beta\n# or premium tier), so 4.6+ rows carry context_window = 1000000.\n\n[models.\"claude-3-5-haiku-20241022\"]\nname = \"Claude Haiku 3.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 4.00, cache_read_per_mtok = 0.08, cache_write_per_mtok = 1.00 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-02-19 per Anthropic deprecations page. Use claude-haiku-4-5-20251001.\"\nsuperseded_by = \"claude-haiku-4-5-20251001\"\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n[models.\"claude-haiku-4-5-20251001\"]\nname = \"Claude Haiku 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n\n[models.\"claude-3-5-sonnet-20240620\"]\nname = \"Claude Sonnet 3.5 (2024-06-20)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-3-5-sonnet-20241022\"]\nname = \"Claude Sonnet 3.5 (2024-10-22)\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2025-10-28 per Anthropic deprecations page. Use claude-sonnet-4-5-20250929 or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-6\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\"]\n[models.\"claude-sonnet-4-20250514\"]\nname = \"Claude Sonnet 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-sonnet-4-6.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 49.0 }\n[models.\"claude-sonnet-4-5\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ndeprecated = true\ndeprecation_note = \"Undated compatibility selector. Anthropic's active API id is claude-sonnet-4-5-20250929; prefer that dated id or claude-sonnet-4-6.\"\nsuperseded_by = \"claude-sonnet-4-5-20250929\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-5-20250929\"]\nname = \"Claude Sonnet 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.2 }\n[models.\"claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 79.6 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# NOTE: an erroneous `claude-sonnet-4-7` row used to live here. No such\n# model exists — Anthropic's models overview (verified 2026-07-02) goes\n# Sonnet 4.5 -> 4.6 -> 5; only the Opus line had a 4.7 release.\n\n# Claude Sonnet 5 (released 2026-05) — the current Sonnet generation.\n# Same request surface as Opus 4.8: adaptive thinking only (extended\n# thinking budgets return 400), `output_config.effort` defaults to high,\n# sampling params rejected, no assistant prefill. 1M-token context at\n# standard pricing. Introductory pricing ($2 / $10 per MTok in/out,\n# cache read 0.1x, 5-min cache write 1.25x) runs through 2026-08-31;\n# standard $3 / $15 applies from 2026-09-01 — update this row then.\n[models.\"claude-sonnet-5\"]\nname = \"Claude Sonnet 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# OpenRouter-routed Anthropic models. Kept as distinct catalog entries\n# so `openrouter:anthropic/claude-*` resolves with the right capability\n# matrix — without these, native-tools requests fail with `option `tools`\n# is not supported by ... (provider openrouter)` because the lookup\n# falls back to a no-tools shape. OpenRouter passes Anthropic's\n# native-tools API through verbatim, including prompt-caching headers\n# (cache attribution surface differs — tracked separately in #2320).\n# Pricing matches the direct Anthropic API; OpenRouter adds its own\n# margin at request time.\n[models.\"anthropic/claude-haiku-4-5\"]\nname = \"Claude Haiku 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\n[models.\"anthropic/claude-fable-5\"]\nname = \"Claude Fable 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\n[models.\"anthropic/claude-sonnet-4-6\"]\nname = \"Claude Sonnet 4.6 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30, cache_write_per_mtok = 3.75 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"anthropic/claude-sonnet-5\"]\nname = \"Claude Sonnet 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 10.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"claude-3-opus-20240229\"]\nname = \"Claude Opus 3\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Retired 2026-01-05 per Anthropic deprecations page. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"long_context\"]\n[models.\"claude-opus-4-20250514\"]\nname = \"Claude Opus 4\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Sunset 2026-06-15 per Anthropic deprecations page. Replaced by claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 77.6 }\n[models.\"claude-opus-4-1-20250805\"]\nname = \"Claude Opus 4.1\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 75.00, cache_read_per_mtok = 1.50, cache_write_per_mtok = 18.75 }\ndeprecated = true\ndeprecation_note = \"Deprecated 2026-06-05 per Anthropic deprecations page; retires 2026-08-05. Use claude-opus-4-8.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 78.9 }\n[models.\"claude-opus-4-5-20251101\"]\nname = \"Claude Opus 4.5\"\nprovider = \"anthropic\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n[models.\"claude-opus-4-6\"]\nname = \"Claude Opus 4.6\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 80.8, swe_bench_pro = 53.4 }\n[models.\"claude-opus-4-7\"]\nname = \"Claude Opus 4.7\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-4-8. No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-4-8\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 87.6, swe_bench_pro = 64.3 }\n# Fast mode (research preview): 6x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 6.0, status = \"research_preview\", pricing = { input_per_mtok = 30.00, output_per_mtok = 150.00, cache_read_per_mtok = 3.00, cache_write_per_mtok = 37.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only. Migrate to Opus 4.8 fast mode for the cheaper 2x rate.\" },\n]\n\n# Claude Opus 4.8 (released 2026-05-28) — Anthropic's most capable model\n# for complex reasoning, long-horizon agentic coding, and high-autonomy\n# work; the current `opus` alias target. Adaptive thinking only (extended\n# thinking budgets return 400); the `effort` parameter controls reasoning\n# depth and defaults to `high` on every surface. Sampling params\n# (temperature/top_p/top_k) are rejected — steer via prompting instead.\n# 1M-token context window at standard per-token pricing (the former\n# long-context beta graduated; there is no premium tier), matching every\n# 4.6+ Claude row. Pricing per the Anthropic models overview: $5 / $25\n# per MTok in/out (cache read 0.1x, 5-min cache write 1.25x).\n[models.\"claude-opus-4-8\"]\nname = \"Claude Opus 4.8\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ndeprecated = true\ndeprecation_note = \"Superseded by claude-opus-5 (same $5/$25 pricing). No formal sunset yet; switch when convenient.\"\nsuperseded_by = \"claude-opus-5\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache. Waitlist/account-manager gated.\" },\n]\n\n# Claude Opus 5 (released 2026-07-24) — the current Opus generation and the\n# `opus` alias target: a drop-in upgrade from Opus 4.8 at identical $5 / $25\n# per MTok pricing (cache read 0.1x, 5-min cache write 1.25x). Inherits the\n# Opus 4.7+ request surface (adaptive thinking only, sampling params rejected,\n# no assistant prefill) with two changes verified against the live API on\n# 2026-07-24:\n# 1. Thinking is ON by default — omitting `thinking` returns thinking blocks,\n# unlike Opus 4.7/4.8 where omission meant no thinking. `Disabled` must be\n# sent explicitly as `{\"type\": \"disabled\"}`.\n# 2. Disabling thinking is capped at effort `high`. `thinking:{disabled}`\n# with effort `xhigh`/`max` is a 400 (\"Use effort 'high' or below, or\n# enable thinking\").\n# The minimum cacheable prefix also halves to 512 tokens (measured: a\n# 691-token prefix caches on Opus 5 and silently does not on Opus 4.8) — see\n# `prompt_cache_min_prefix_tokens` in the capability rules.\n# Rate limits are a bucket separate from the combined Opus 4.x pool.\n[models.\"claude-opus-5\"]\nname = \"Claude Opus 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n# Fast mode (research preview): 2x standard pricing, ~2.5x output tok/s.\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"speed\", value = \"fast\", beta_header = \"fast-mode-2026-02-01\" }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"research_preview\", pricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"higher output-token throughput than standard Claude serving\", reliability = \"research preview, account-manager gated\", unsuitable_workloads = [\"batch\"], note = \"Claude API + Managed Agents only (not Bedrock/Vertex/Foundry); excluded from Batch and Priority Tier. Switching speed invalidates the prompt cache.\" },\n]\n\n[models.\"anthropic/claude-opus-5\"]\nname = \"Claude Opus 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\n\n[models.\"anthropic/claude-opus-4.8\"]\nname = \"Claude Opus 4.8 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 25.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_verified = 88.6, swe_bench_pro = 69.2 }\n\n# Claude Fable 5 (released 2026-06-09) — Anthropic's most capable widely\n# released model: the first generally available Mythos-class model, a new\n# tier *above* Opus (Opus 4.8 stays current and keeps the `opus` alias;\n# nothing is superseded). Same request surface as Opus 4.7/4.8 — adaptive\n# thinking only, sampling params rejected, no assistant prefill — plus one\n# new constraint: an explicit `thinking: {type: \"disabled\"}` is also a 400\n# (thinking is always on; omit the field instead, which our request\n# builder already does for the Disabled config). Safety classifiers can\n# decline requests with stop_reason=\"refusal\"; the `fallbacks` beta\n# retries on Opus 4.8. No fast mode tier. 1M-token context window at\n# standard pricing, like every 4.6+ row. Pricing per the Anthropic\n# pricing page:\n# $10 / $50 per MTok in/out (cache read 0.1x, 5-min cache write 1.25x);\n# Batch API 50% discount applies. SWE-bench Verified not published for\n# Fable 5 itself at launch (only for Mythos Preview), so it is omitted.\n[models.\"claude-fable-5\"]\nname = \"Claude Fable 5\"\nprovider = \"anthropic\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"agentic\"]\nbenchmarks = { swe_bench_pro = 80.3 }\ncomplementary_with = [\"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/10-openai-gemini-mistral.toml ---\n# OpenAI ─ pricing pages: https://platform.openai.com/docs/pricing.\n\n# OpenAI section verified 2026-07-30 against the models and pricing docs\n# (platform.openai.com now redirects to developers.openai.com). Current\n# lineup: the GPT-5.6 family (Sol/Terra/Luna), gpt-5.5 / gpt-5.5-pro,\n# the gpt-5.4 tier family, and gpt-5.3-codex for agentic coding. The entire\n# GPT-4/o-series legacy exits by 2026-10-23 (announced 2026-04-22), and\n# the gpt-5 dated snapshots plus o3/o3-pro shut down 2026-12-11\n# (announced 2026-06-11).\n\n# GPT-5.6 — current OpenAI family. The bare gpt-5.6 API alias routes to Sol;\n# Harn resolves it through the alias catalog so receipts keep the explicit\n# tier. All three models accept none/low/medium/high/xhigh/max effort, support\n# image input, and expose the Responses-first hosted tool surface. Cache writes\n# cost 1.25x standard input; the catalog records that rate separately so cost\n# projections remain correct when usage reports cache_write_tokens.\n[models.\"gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol\"\nblurb = \"Most capable GPT-5.6 option for difficult planning, coding, and review, with the highest cost.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 2.5, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 10.00, output_per_mtok = 60.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }, latency = \"up to 2.5x faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, cache_write_per_mtok = 3.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra\"\nblurb = \"Balanced GPT-5.6 option for everyday coding work, with lower cost and latency than Sol.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 4.00, output_per_mtok = 24.00, cache_read_per_mtok = 0.40, cache_write_per_mtok = 5.00 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 1.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n[models.\"gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna\"\nblurb = \"Fastest and lowest-cost GPT-5.6 option for routine edits, summaries, and quick iterations.\"\nprovider = \"openai\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, cost_multiplier = 2.0, status = \"ga\", pricing = { input_per_mtok = 0.40, output_per_mtok = 2.40, cache_read_per_mtok = 0.04, cache_write_per_mtok = 0.50 }, latency = \"faster output with more consistent latency for user-facing traffic\", reliability = \"provider may downgrade ramp-limited traffic to standard rates and echo service_tier=default\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. Requests use service_tier=fast; GPT-5.6 responses still echo service_tier=priority when the premium tier was served.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", pricing = { input_per_mtok = 0.10, output_per_mtok = 0.60, cache_read_per_mtok = 0.01, cache_write_per_mtok = 0.125 }, latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"] },\n]\n\n# GPT-5.5 — current OpenAI frontier (Responses + Chat Completions).\n# Reasoning model driven by `reasoning_effort` (none/low/medium/high/\n# xhigh; reasoning tokens bill as output). Standard $5 / $30 per MTok\n# (cached input $0.50); short-context rates shown — prompts over 272k\n# input tokens bill the ENTIRE request at the long-context tier\n# ($10 in / $1 cached / $45 out per MTok) per the GPT-5.5 model page.\n# Accelerated serving rides the `service_tier` knob. OpenAI renamed Priority\n# processing to Fast mode on 2026-07-30; both `fast` and `priority` request\n# values are accepted, while GPT-5.6 and earlier responses echo `priority`.\n# GPT-5.5 bills this tier at 2.5x standard. Off by default.\n[models.\"gpt-5.5\"]\nname = \"GPT-5.5\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"fast\", label = \"Fast mode\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"fast\", response_values = [\"fast\", \"priority\"] }, otps_speedup = 1.5, cost_multiplier = 2.5, status = \"ga\", pricing = { input_per_mtok = 12.50, output_per_mtok = 75.00, cache_read_per_mtok = 1.25 }, latency = \"lower latency and faster output than default serving\", reliability = \"provider may downgrade or reject unavailable premium capacity\", unsuitable_workloads = [\"batch\"], note = \"OpenAI renamed Priority processing to Fast mode on 2026-07-30. GPT-5.5 responses echo service_tier=priority even when requests use service_tier=fast. Not offered for long-context, fine-tuned models, or embeddings.\" },\n { id = \"flex\", label = \"Flex processing\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"beta\", latency = \"slower and variable synchronous latency\", reliability = \"best-effort availability; provider can return resource unavailable\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Docs describe Flex as model-availability limited and priced at Batch API rates; do not treat it as an async Batch API route.\" },\n]\n\n[models.\"gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# GPT-5.4 tier family — the current cost ladder below gpt-5.5. All are\n# reasoning models (reasoning_effort) with vision input and cached-input\n# pricing at 0.1x. gpt-5.4-mini is the modern `mid` tier default;\n# gpt-5.4-nano is the cheapest current OpenAI model.\n[models.\"gpt-5.4\"]\nname = \"GPT-5.4\"\nprovider = \"openai\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 15.00, cache_read_per_mtok = 0.25, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro\"\nprovider = \"openai\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00, input_token_bands = [{ minimum_input_tokens = 272001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"summarization\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\n\n# GPT-5.3-Codex — agentic-coding tune (released 2026-02-05). OpenAI now\n# recommends gpt-5.5 for most Codex tasks; kept for cost-sensitive\n# coding loops.\n[models.\"gpt-5.3-codex\"]\nname = \"GPT-5.3-Codex\"\nprovider = \"openai\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.75, output_per_mtok = 14.00, cache_read_per_mtok = 0.175 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n\n# GPT-4o retired from ChatGPT 2026-02-13; chatgpt-4o-latest removed\n# from API 2026-02-17 (Enterprise/Edu grace until 2026-04-03).\n[models.\"gpt-4o\"]\nname = \"GPT-4o\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00, cache_read_per_mtok = 1.25 }\ndeprecated = true\ndeprecation_note = \"API sunset 2026-02-17 per OpenAI deprecations page. Switch to gpt-5.4-mini for cheap routing or gpt-5.5 for frontier.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"vision\", \"tool_use\"]\n[models.\"gpt-4o-mini\"]\nname = \"GPT-4o Mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.075 }\n# No individually announced sunset as of 2026-07-02, but the GPT-4-era\n# legacy exits by 2026-10-23 per the 2026-04-22 deprecations\n# announcement. The `mid` tier default moved to gpt-5.4-mini.\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"summarization\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"gpt-4.1\"]\nname = \"GPT-4.1\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-mini\"]\nname = \"GPT-4.1 Mini\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 1.60, cache_read_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4.1-nano\"]\nname = \"GPT-4.1 Nano\"\nprovider = \"openai\"\ncontext_window = 1047576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"gpt-4-turbo\"]\nname = \"GPT-4 Turbo\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 30.00 }\ndeprecated = true\ndeprecation_note = \"Superseded by gpt-5 family. Listed for cost-attribution backfill only.\"\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\"]\n[models.o1]\nname = \"OpenAI o1\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 15.00, output_per_mtok = 60.00, cache_read_per_mtok = 7.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\"]\n[models.\"o1-mini\"]\nname = \"OpenAI o1-mini\"\nprovider = \"openai\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Legacy o-series; the GPT-4/o-series legacy exits by 2026-10-23 per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"cheap\"]\n[models.o3]\nname = \"OpenAI o3\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 8.00, cache_read_per_mtok = 0.50 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-12-11 (announced 2026-06-11) per OpenAI deprecations page. Use gpt-5.5.\"\nsuperseded_by = \"gpt-5.5\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 69.1 }\n[models.\"o4-mini\"]\nname = \"OpenAI o4-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.275 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"vision\"]\n[models.\"o3-mini\"]\nname = \"OpenAI o3-mini\"\nprovider = \"openai\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.10, output_per_mtok = 4.40, cache_read_per_mtok = 0.55 }\ndeprecated = true\ndeprecation_note = \"Shutdown 2026-10-23 (announced 2026-04-22) per OpenAI deprecations page. Use gpt-5.4-mini.\"\nsuperseded_by = \"gpt-5.4-mini\"\ntier = \"reasoning\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"cheap\"]\nbenchmarks = { swe_bench_verified = 49.3 }\n\n# Google Gemini ─ pricing: https://ai.google.dev/gemini-api/docs/pricing,\n# verified 2026-07-02. Gemini 1.0 / 1.5 already retired; Gemini 2.0\n# Flash + Flash-Lite shut down 2026-06-01 per the deprecations page.\n# The 2.5 family remains served alongside the current 3.x lineup\n# (gemini-3.5-flash stable flagship, gemini-3.1-pro-preview,\n# gemini-3.1-flash-lite). Thinking tokens bill as output; implicit\n# caching is automatic (90% discount on cache hits), explicit caching\n# adds hourly storage.\n# NOTE: this row previously carried Flash-Lite's $0.10/$0.40 rates.\n# Gemini 2.5 Flash is $0.30 in / $2.50 out (cache read $0.03) per the\n# pricing page; the $0.10/$0.40 tier is gemini-2.5-flash-lite below.\n[models.\"gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-2.5-flash-lite\"]\nname = \"Gemini 2.5 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.40, cache_read_per_mtok = 0.01 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"summarization\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.5 Flash is Google's current speed/cost frontier route for agentic\n# workflows. Google lists a 1,048,576-token input window and 65,536-token\n# output ceiling on the Gemini API model page.\n[models.\"gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Gemini 3.1 Pro (Preview) — context-length-tiered pricing: $2 in / $12\n# out per MTok up to 200k input, $4 / $18 beyond (the catalog records\n# the <=200k tier). Paid tier only. Cache read $0.20 (<=200k) plus\n# $4.50/MTok/hr storage for explicit caches.\n[models.\"gemini-3.1-pro-preview\"]\nname = \"Gemini 3.1 Pro (Preview)\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"coding\", \"long_context\", \"vision\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n[models.\"gemini-3.1-flash-lite\"]\nname = \"Gemini 3.1 Flash-Lite\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50, cache_read_per_mtok = 0.025 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# OpenRouter-routed variants of the same models — kept as distinct\n# catalog entry so the `qc_defaults.openrouter` lookup resolves to a\n# registered ID. Pricing matches the native Gemini API; OpenRouter adds\n# its own margin at request time.\n[models.\"google/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 2.50, cache_read_per_mtok = 0.03 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n[models.\"google/gemini-3.5-flash\"]\nname = \"Gemini 3.5 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 9.00, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n# Gemini 2.5 Pro — context-length-tiered: $1.25 in / $10 out per MTok up\n# to 200k input, $2.50 / $15 beyond (the catalog records the <=200k\n# tier; the previous $5 output figure and 2M context were wrong — the\n# model page lists a 1,048,576-token window).\n[models.\"gemini-2.5-pro\"]\nname = \"Gemini 2.5 Pro\"\nprovider = \"gemini\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 10.00, cache_read_per_mtok = 0.125, input_token_bands = [{ minimum_input_tokens = 200001, input_multiplier = 2.0, output_multiplier = 1.5 }] }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"long_context\", \"vision\", \"reasoning\", \"coding\"]\nbenchmarks = { swe_bench_verified = 63.8 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\nserving_tiers = [\n { id = \"flex\", label = \"Flex inference\", mode = \"synchronous\", economics = \"discounted\", request = { param = \"service_tier\", value = \"flex\" }, discount_percent = 50, status = \"research_preview\", latency = \"variable synchronous latency for latency-tolerant workloads\", reliability = \"best-effort availability; resource unavailability is possible\", suitable_workloads = [\"offline_eval\", \"corpus\", \"bulk_judge\"], unsuitable_workloads = [\"interactive_chat\"], note = \"Flex is synchronous and distinct from Gemini Batch. Cache and batch discounts do not stack; cache-hit discount takes precedence where documented.\" },\n { id = \"priority\", label = \"Priority inference\", mode = \"synchronous\", economics = \"premium\", request = { param = \"service_tier\", value = \"priority\" }, status = \"research_preview\", latency = \"predictable low-latency serving for user-facing traffic\", reliability = \"traffic can gracefully downgrade to standard when dynamic priority limits are exceeded\", unsuitable_workloads = [\"batch\"], note = \"GenerateContent responses expose downgrade via x-gemini-service-tier.\" },\n]\n\n# Mistral ─ pricing: https://mistral.ai/pricing/api/, verified\n# 2026-07-02. Direct rows first, then OpenRouter mirrors.\n[models.\"mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\", \"vision\"]\n[models.\"mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"mistral\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# Codestral — Mistral's FIM/code-completion line (version 25.08; the\n# `codestral-latest` API handle currently resolves here).\n[models.\"codestral-2508\"]\nname = \"Codestral 25.08\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.90 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"speed\", \"cheap\"]\n\n# Devstral 2 — Mistral's agentic-coding tunes (version 25.12; the\n# `devstral-medium-latest` / `devstral-small-latest` API handles\n# currently resolve to these dated ids).\n[models.\"devstral-medium-2512\"]\nname = \"Devstral 2 Medium\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"tool_use\", \"agentic\"]\n[models.\"devstral-small-2512\"]\nname = \"Devstral 2 Small\"\nprovider = \"mistral\"\ncontext_window = 262144\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"tool_use\"]\n[models.\"mistralai/mistral-medium-3-5\"]\nname = \"Mistral Medium 3.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 1.50, output_per_mtok = 7.50 }\narchitecture = { parameter_count_b = 128.0, moe = false, license = \"Modified MIT\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\", \"agentic\"]\n[models.\"mistralai/mistral-large-2512\"]\nname = \"Mistral Large 3 2512\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-large-3-2512\"\nequivalence_group = \"mistral-large-3-2512\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50, cache_read_per_mtok = 0.05 }\narchitecture = { parameter_count_b = 675.0, active_parameter_count_b = 41.0, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"long_context\"]\n[models.\"mistralai/mistral-small-2603\"]\nname = \"Mistral Small 4\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"mistral-small-4-2603\"\nequivalence_group = \"mistral-small-4-2603\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60, cache_read_per_mtok = 0.015 }\narchitecture = { parameter_count_b = 119.0, active_parameter_count_b = 6.5, moe = true, license = \"Apache-2.0\", source_url = \"https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03\", last_verified = \"2026-06-05\" }\n# Inline metadata matches the mistral-small-4-2603 equivalence group and keeps\n# this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"speed\", \"tool_use\", \"long_context\"]\n\n# --- source: 60-models/20-open-weight-openrouter.toml ---\n# Open-weight executor candidates (<$2/Mtok with function calling). Use\n# these via OpenRouter or Fireworks for fast secondary-model dispatch.\n# Pricing snapshot 2026-05 from OpenRouter / Artificial Analysis.\n[models.\"qwen/qwen3-coder\"]\nname = \"Qwen3 Coder 480B A35B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 1.80 }\navailability = \"serverless\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\nbenchmarks = { swe_bench_verified = 67.0 }\n\n# Qwen3-Coder-Next — 80B/3B MoE non-thinking coder.\n[models.\"qwen/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.11, output_per_mtok = 0.80, cache_read_per_mtok = 0.07 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n# Qwen3.5-397B-A17B — the open-tier Qwen flagship (native VLM MoE).\n# OpenRouter serverless rate verified 2026-07-02.\n[models.\"qwen/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.385, output_per_mtok = 2.45 }\navailability = \"serverless\"\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Together lists Qwen3-Coder-Next-FP8 in GET /v1/models alongside its\n# serverless catalog, but normal chat-completion calls fail with\n# `model_not_available` and instruct the caller to create a dedicated\n# endpoint. Carry the catalog row so price/route metadata is preserved,\n# but mark `availability = \"dedicated\"` so hosts don't surface it as a\n# one-click serverless option.\n[models.\"Qwen/Qwen3-Coder-Next-FP8\"]\nname = \"Qwen3 Coder Next FP8 (Together, dedicated)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.18, output_per_mtok = 0.18 }\navailability = \"dedicated\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"deepseek/deepseek-v3.2\"]\nname = \"DeepSeek V3.2\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.2288, output_per_mtok = 0.3432 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"moonshotai/kimi-k2.6\"]\nname = \"Kimi K2.6\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.68, output_per_mtok = 3.41, cache_read_per_mtok = 0.34 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\nbenchmarks = { swe_bench_pro = 58.6, humanitys_last_exam_with_tools = 54.0 }\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"moonshotai/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B\"\nprovider = \"openrouter\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"openrouter\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\n# Explicit metadata keeps this row self-described across fragment boundaries.\n# GPT-OSS 120B is Apache-2.0 (open weight) and text-only; it is Burin's cheap\n# coding executor.\n# `tier`/`open_weight`/`strengths` match the rest of the openai-gpt-oss-120b\n# equivalence group (the validator requires one tier per logical model — the\n# conservative shared baseline is `frontier`).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/25-openrouter-frontier-agents.toml ---\n# Current OpenRouter-hosted coding/agent models that are not direct provider\n# defaults. Pricing snapshots are from OpenRouter's live `/api/v1/models`.\n\n[models.\"qwen/qwen3.7-plus\"]\nname = \"Qwen3.7 Plus\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28, cache_read_per_mtok = 0.064, cache_write_per_mtok = 0.40 }\n\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n[models.\"qwen/qwen3.7-max\"]\nname = \"Qwen3.7 Max\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.25, cache_write_per_mtok = 1.5625 }\n\n# OpenRouter describes Max as the flagship Qwen3.7 route; keep it out of the\n# value/mid tier so price-sensitive selectors do not confuse it with Flash.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"kwaipilot/kat-coder-pro-v2\"]\nname = \"KAT-Coder-Pro V2\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"speed\"]\ncomplementary_with = [\"qwen\", \"deepseek\", \"kimi\", \"minimax\", \"zai-glm\"]\n[models.\"stepfun/step-3.7-flash\"]\nname = \"Step 3.7 Flash\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.15, cache_read_per_mtok = 0.04 }\n# Inline metadata matches the step-3.7-flash equivalence group and keeps this\n# row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/26-together-frontier-agents.toml ---\n# Current Together serverless frontier/agent routes observed through\n# `GET /v1/models`. Keep rows here when Harn supports the provider but the\n# model is absent from direct-provider catalogs.\n\n[models.\"Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n[models.\"deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Together)\"\nprovider = \"together\"\ncontext_window = 512000\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.20 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\n\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n[models.\"zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Together)\"\nprovider = \"together\"\n# Together serves GLM-5.2 at 262K (fp4), not the model's full 1M window\n# — per-host context caps differ; verified 2026-07-02 on together.ai.\ncontext_window = 262144\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"coding\", \"long_context\", \"tool_use\", \"reasoning\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# MiniMax M3 on Together — 524K serverless window, billed at the same\n# $0.30/$1.20 rate as the first-party API. Verified 2026-07-02.\n[models.\"MiniMaxAI/MiniMax-M3\"]\nname = \"MiniMax M3 (Together)\"\nprovider = \"together\"\ncontext_window = 524288\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Kimi K2.7 Code on Together — int4-native weights at the first-party\n# list rate. Verified 2026-07-02.\n[models.\"moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\"]\n[models.\"MiniMaxAI/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (Together)\"\nprovider = \"together\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Inline metadata matches the minimax-m2.7 equivalence group and keeps this row\n# independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n# Reliable Together serverless sample routes (harn#3645 §4). The prior\n# representative serverless rows were unusable as one-click samples:\n# `Qwen/Qwen3-Coder-Next-FP8` returns `model_not_available` on serverless\n# chat-completions (needs a dedicated endpoint; carried as\n# `availability = \"dedicated\"` in 20-open-weight-openrouter.toml), and the\n# Together `google/gemma-4-31B-it` route is a reasoning model with an\n# empty-content footgun. These two non-reasoning Turbo routes are live on\n# Together's serverless `/v1/chat/completions` with native tool calls and\n# serve as dependable cheap executor samples. Verified live ids on\n# together.ai/models (Qwen2.5 7B Instruct Turbo, Llama 3.3 70B Instruct\n# Turbo).\n[models.\"Qwen/Qwen2.5-7B-Instruct-Turbo\"]\nname = \"Qwen2.5 7B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.30 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"meta-llama/Llama-3.3-70B-Instruct-Turbo\"]\nname = \"Llama 3.3 70B Instruct Turbo (Together)\"\nprovider = \"together\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.88, output_per_mtok = 0.88 }\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\", \"cheap\"]\n\n# --- source: 60-models/30-cerebras.toml ---\n# Cerebras-hosted open-weight models. Serverless rows mirror\n# https://api.cerebras.ai/public/v1/models; dedicated-endpoint families are\n# intentionally not added as one-click routes unless Cerebras exposes a stable\n# public wire ID for the standard endpoint. The headline binder-substrate\n# candidate is gpt-oss-120b at very high token throughput; GLM 4.7 is the\n# public preview coding/agentic route.\n#\n# Catalog keys are bare wire IDs (Cerebras's /v1/chat/completions wants\n# the raw model name). Users routing via `model: \"cerebras/\"` get\n# the slash-prefixed selector stripped by `normalize_model_id` while\n# `infer_provider` routes them to this provider.\n[models.\"gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"cerebras-wafer-scale\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.35, output_per_mtok = 0.75 }\nrate_limits = { rpm = 250, tpm = 250000, tph = 1000000, tpd = 1000000, tier = \"developer\", source_url = \"https://inference-docs.cerebras.ai/support/rate-limits\", last_verified = \"2026-06-12\", notes = \"Developer (Pay as You Go) tier confirmed live from x-ratelimit-limit-requests/tokens response headers 2026-06-12 (250 RPM / 250K TPM). The prior Free Trial row (5 RPM / 30K TPM) needlessly throttled the proactive sliding-window limiter to a crawl. Override per-deployment with HARN_RATE_LIMIT_CEREBRAS_RPM / HARN_RATE_LIMIT_CEREBRAS_TPM.\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n[models.\"zai-glm-4.7\"]\nname = \"Z.ai GLM 4.7 (Cerebras)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 2.25, output_per_mtok = 2.75 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n[models.\"llama-3.3-70b\"]\nname = \"Llama 3.3 70B (Cerebras, dedicated legacy)\"\nprovider = \"cerebras\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.85, output_per_mtok = 1.20 }\navailability = \"dedicated\"\ndeprecated = true\ndeprecation_note = \"Cerebras no longer returns this model from public discovery; use a provisioned dedicated endpoint alias if your organization still serves these weights.\"\n# Inline metadata keeps this deprecated legacy route independent of\n# fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"tool_use\"]\n\n# --- source: 60-models/40-minimax.toml ---\n# MiniMax family ─ pricing pages:\n# https://platform.minimax.io/docs/guides/pricing-paygo\n# https://platform.minimax.io/docs/guides/model-invocation\n# https://platform.minimax.io/docs/api-reference/text-openai-api\n# llm-stats.com/models/minimax-m2-7.\n# M3 pricing below is the billed <=512K-input rate verified 2026-07-02:\n# $0.30/M input, $1.20/M output, $0.06/M cache-read. MiniMax labels this\n# a *permanent* 50% discount off the $0.60/$2.40 list rate on the\n# pay-as-you-go page, so the discounted rate — what callers are actually\n# billed — is the source of truth (the earlier revision of this comment\n# treated it as a transient launch promo). The >512K-input tier bills\n# the entire request at 2x and is sales-gated; this catalog's\n# ModelPricing shape is a single rate card, so the base tier stands.\n#\n# MiniMax M2: 230B total / 10B active MoE shared across M2/M2.5/M2.7.\n# Context windows from artificialanalysis.ai/models/minimax-m2-7 (205K).\n# Pricing reflects the direct MiniMax API surface; OpenRouter mirrors are\n# listed separately below.\n#\n# Tool calls + thinking-mode are supported (release notes call out\n# \"agentic harness\" support); structured output is delimited (no native\n# JSON schema mode), and prompt caching is hit-priced at 20% of input.\n[models.\"MiniMax-M3\"]\nname = \"MiniMax M3\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\n# Weights published on HF (MiniMaxAI/MiniMax-M3, 427B MoE + MXFP8\n# variant) ~10 days after the API launch, so open_weight flipped true.\narchitecture = { parameter_count_b = 427.0, moe = true, source_url = \"https://huggingface.co/MiniMaxAI/MiniMax-M3\", last_verified = \"2026-07-02\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\nbenchmarks = { swe_bench_pro = 59.0 }\n[models.\"MiniMax-M2\"]\nname = \"MiniMax M2\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.255, output_per_mtok = 1.00, cache_read_per_mtok = 0.051 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"cheap\", \"tool_use\"]\nbenchmarks = { aa_intelligence_index = 45.0 }\n[models.\"MiniMax-M2.5\"]\nname = \"MiniMax M2.5\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"MiniMax-M2.5-highspeed\"]\nname = \"MiniMax M2.5 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.28, output_per_mtok = 1.10, cache_read_per_mtok = 0.056 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-M2.7\"]\nname = \"MiniMax M2.7\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 50.0 }\n[models.\"MiniMax-M2.7-highspeed\"]\nname = \"MiniMax M2.7 (highspeed)\"\nprovider = \"minimax\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\"]\n[models.\"MiniMax-Text-01\"]\nname = \"MiniMax Text 01\"\nprovider = \"minimax\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10 }\ndeprecated = true\ndeprecation_note = \"Dead on api.minimax.io 2026-06-28 (harn#3645 §4): HTTP 500 'token plan not support model (2061)' and absent from GET /v1/models. Use MiniMax-M2 (or M2.5/M2.7).\"\nsuperseded_by = \"MiniMax-M2\"\n\n# MiniMax mirror on OpenRouter — same family, OpenRouter adds margin and\n# bundles native-tools passthrough so the openai_chat_completions wire\n# format Just Works for callers without a direct MiniMax key. The M3 row\n# matches the billed first-party rate (see the M3 comment above).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"long_context\"]\n[models.\"minimax/minimax-m3\"]\nname = \"MiniMax M3 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n[models.\"minimax/minimax-m2.7\"]\nname = \"MiniMax M2.7 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"minimax/minimax-m2.5\"]\nname = \"MiniMax M2.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 205000\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.90 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n[models.\"minimax/minimax-m2\"]\nname = \"MiniMax M2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.33, output_per_mtok = 1.20 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/50-zai.toml ---\n# Z.AI GLM family, served via the OpenAI-compatible `/api/paas/v4` endpoint\n# (the `.../v1` base 404s). The live `/models` listing on 2026-07-03 reports:\n# glm-4.5, glm-4.5-air, glm-4.6, glm-4.7, glm-5, glm-5-turbo, glm-5.1,\n# glm-5.2. GLM-5.2 is the current 1M-context open-weight flagship; the GLM-4.x\n# line stays catalogued as the cheap independent-bucket coding/judge routes\n# (glm-4.6 is confirmed serving 200 at paas/v4). Pricing per docs.z.ai.\n\n# GLM-4.6 — 200K-context coding model, confirmed serving at paas/v4.\n[models.\"glm-4.6\"]\nname = \"GLM 4.6\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-4.5 — prior-generation coding flagship; GLM-4.5-Air is the lighter\n# MoE variant. Kept as cheap independent-bucket routes.\n[models.\"glm-4.5\"]\nname = \"GLM 4.5\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-4.5-air\"]\nname = \"GLM 4.5 Air\"\nprovider = \"zai\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.10, cache_read_per_mtok = 0.03 }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\"]\n\n# GLM-4.7 — current GLM-4.x generation coding model.\n[models.\"glm-4.7\"]\nname = \"GLM 4.7\"\nprovider = \"zai\"\ncontext_window = 204800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n\n# GLM-5 family. GLM-5.2 is the current 1M-context open-weight flagship;\n# GLM-5.1 / GLM-5 are kept for pinned callers. glm-5-turbo is the current\n# accelerated tier. OpenRouter mirrors live below.\n[models.\"glm-5-turbo\"]\nname = \"GLM 5 Turbo\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.00, cache_read_per_mtok = 0.11 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"cheap\"]\n[models.\"glm-5\"]\nname = \"GLM 5\"\nprovider = \"zai\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# docs.z.ai pricing verified 2026-07-02: $1.00 / $3.20 per MTok (cache\n# hit $0.20). The prior 0.98/3.08 figures matched no published tier.\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"glm-5.1\"]\nname = \"GLM 5.1\"\nprovider = \"zai\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n[models.\"glm-5.2\"]\nname = \"GLM 5.2\"\nprovider = \"zai\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_pro_lead = 1.0 }\n\n# OpenRouter mirror of GLM-5 family so callers without a Z.AI key still\n# resolve a route. OR doesn't list GLM-4.6/4.7 — the canonical OR slugs\n# are the GLM-5 generation.\n[models.\"z-ai/glm-5\"]\nname = \"GLM 5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n[models.\"z-ai/glm-5.1\"]\nname = \"GLM 5.1 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.98, output_per_mtok = 3.08 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5.2\"]\nname = \"GLM 5.2 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\nequivalence_group = \"frontier-agent-coding\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.91, output_per_mtok = 2.86, cache_read_per_mtok = 0.169 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"z-ai/glm-5v-turbo\"]\nname = \"GLM 5V Turbo (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"vision\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.00 }\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"coding\", \"agentic\"]\n\n# --- source: 60-models/60-deepseek-openrouter-qwen.toml ---\n# DeepSeek V4 family ─ pricing pages: api-docs.deepseek.com/quick_start/pricing.\n# Both V4 models share a 1M-token context window and 384K-token output\n# cap. DeepSeek's 2026-04-24 V4 notice says to keep the base_url and use\n# `deepseek-v4-flash` or `deepseek-v4-pro`; `deepseek-chat` and\n# `deepseek-reasoner` become inaccessible after 2026-07-24 15:59 UTC.\n[models.\"deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 0.28, cache_read_per_mtok = 0.0028 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 58.0 }\n[models.\"deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro\"\nprovider = \"deepseek\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\nbenchmarks = { aa_intelligence_index = 68.0 }\n# DeepSeek V4 OpenRouter mirrors. OpenRouter publishes an independent\n# rate card and a binary 1M-token context window for these routes.\n[models.\"deepseek/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.098, output_per_mtok = 0.196, cache_read_per_mtok = 0.020 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\n[models.\"deepseek/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.435, output_per_mtok = 0.87, cache_read_per_mtok = 0.003625 }\n\n# Open-router Qwen3.5 9B (kept for the `small` tier alias).\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n[models.\"Qwen/Qwen3.5-9B\"]\nname = \"Qwen3.5 9B\"\nprovider = \"openrouter\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# OpenRouter Qwen3.6 routes. Live OpenRouter `/api/v1/models` snapshot on\n# 2026-07-02 reports tools/tool_choice, structured_outputs/response_format,\n# reasoning, text+image+video input, and the prices below. A 2026-07-03\n# refresh also reports input_cache_write for Flash. Harn's capability matrix\n# owns the runtime quirks: native tools stay enabled, reasoning is disabled\n# automatically for tool-bearing tasks, and the broken Ambient OpenRouter\n# upstream is denied through provider_route_denylist.\n[models.\"qwen/qwen3.6-flash\"]\nname = \"Qwen3.6 Flash (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.1875, output_per_mtok = 1.125, cache_write_per_mtok = 0.234375 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-plus\"]\nname = \"Qwen3.6 Plus (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.325, output_per_mtok = 1.95 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\nbenchmarks = { swe_bench_verified = 78.8 }\n\n[models.\"qwen/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.14, output_per_mtok = 1.00 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"coding\", \"tool_use\", \"reasoning\"]\n\n# --- source: 60-models/70-local-ollama.toml ---\n# Ollama / local models — no `pricing` (free); context_window reflects\n# model card ceiling. `runtime_context_window` caps what Harn will\n# actually feed the runtime (host memory budget).\n[models.\"llama3.2\"]\nname = \"Llama 3.2\"\nprovider = \"ollama\"\ncontext_window = 32000\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma4:26b\"]\nname = \"Gemma 4 26B MoE\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 300.0\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"tool_use\"]\n# Gemma 4 12B — encoder-free unified multimodal model (Apache 2.0), built to run\n# on a 16GB laptop. Published on Ollama only as quantized variants (no bare\n# `gemma4:12b` tag). Verified via `ollama show`: the quantized 12B builds expose\n# `tools` + native `thinking` but are TEXT-ONLY at 128K context — the vision\n# projector is dropped in these conversions, unlike the larger 26b/31b builds.\n# MLX is the Apple-Silicon path; nvfp4 targets NVIDIA Blackwell; mxfp8 is the\n# higher-fidelity quant.\n[models.\"gemma4:12b-mlx\"]\nname = \"Gemma 4 12B (MLX)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n[models.\"gemma4:12b-nvfp4\"]\nname = \"Gemma 4 12B (NVFP4)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"gemma4:12b-mxfp8\"]\nname = \"Gemma 4 12B (MXFP8)\"\nprovider = \"ollama\"\ncontext_window = 131072\nruntime_context_window = 32768\nstream_timeout = 240.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\"]\n[models.\"devstral-small-2:24b\"]\nname = \"Devstral Small 2 24B\"\nprovider = \"ollama\"\ncontext_window = 262144\nruntime_context_window = 32768\nstream_timeout = 600.0\ncapabilities = [\"tools\", \"streaming\"]\n# Inline metadata keeps this row independent of fragment-order defaults.\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\"]\n\n# --- source: 60-models/80-local-runtimes.toml ---\n# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q4_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 262144\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b-ud-q4-k-xl\".local_memory]\nmeasured_resident_gib = 19.5\nmeasured_context_window = 8192\nmeasured_cache_type = \"q8_0\"\nbase_resident_gib = 19.0\nkv_cache_gib_per_1k_ctx = 0.0135\ndefault_cache_type = \"q8_0\"\nsafety_margin_gib = 4.0\nmax_recommended_context = 262144\ncache_type_multipliers = { q8_0 = 1.0, f16 = 2.0, q4_0 = 0.5, q4_1 = 0.5, q5_0 = 0.625, q5_1 = 0.625 }\nlast_verified = \"2026-06-28\"\nnotes = \"Empirical llama.cpp b9821 / CUDA 12.8 / RTX 5090 measurements with q8_0 KV showed SWA-capped KV growth of about 0.87 GiB per 65k tokens and full 262144 ctx fitting with headroom. Treat as a sizing estimate, not an allocator guarantee.\"\n[models.\"qwen3.6-35b-a3b-ud-q5-k-xl\"]\nname = \"Qwen3.6 35B (Unsloth Q5_K_XL, llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B (llama.cpp)\"\nprovider = \"llamacpp\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Apple Silicon MLX. Burin #2717 switched the local MLX route from the\n# never-downloaded dense vision model `unsloth/Qwen3.6-27B-UD-MLX-4bit` to the\n# coding-tuned Qwen3.6-35B-A3B MoE served via `mlx_lm.server` (text MoE, no\n# vision). Shares the `qwen3.6-35b-a3b` logical_model / equivalence_group with\n# the llama.cpp GGUF route so eval aggregation treats the two runtimes as the\n# same model and compares them directly. Keep strengths conservative until\n# `mlx_lm.server` has its own tool/agentic probe evidence; equivalence groups\n# use the least-decorated host baseline for escalation decisions.\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 4-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n[models.\"unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit\"]\nname = \"Qwen3.6 35B-A3B (MLX 8-bit)\"\nprovider = \"mlx\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\ncontext_window = 262144\nruntime_context_window = 65536\nstream_timeout = 900.0\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n\n# Local OpenAI-compatible servers (vLLM / bring-your-own).\n[models.\"gemma-4-e2b-it\"]\nname = \"Gemma 4 E2B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n[models.\"gemma-4-e4b-it\"]\nname = \"Gemma 4 E4B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"small\"\nopen_weight = true\nstrengths = [\"cheap\"]\n[models.\"gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\"]\n[models.\"gemma-4-31b-it\"]\nname = \"Gemma 4 31B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 600.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\"]\n[models.\"gemma-4-12b-it\"]\nname = \"Gemma 4 12B (local)\"\nprovider = \"local\"\ncontext_window = 131072\nstream_timeout = 300.0\ncapabilities = [\"streaming\", \"tools\", \"vision\", \"thinking\", \"structured_output\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"speed\"]\n\n# --- source: 60-models/85-huggingface-router.toml ---\n# Hugging Face Inference Providers router rows. The router is\n# OpenAI-compatible, but availability and pricing can vary by selected\n# upstream provider, so these rows encode stable model identity/capability\n# metadata rather than a route-specific rate card.\n\n[models.\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\nname = \"Qwen3-Coder 480B A35B Instruct (Hugging Face Router)\"\nprovider = \"huggingface\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\ncontext_window = 262144\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"huggingface-router\"\napi_dialect = \"openai_chat\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\narchitecture = { parameter_count_b = 480.0, active_parameter_count_b = 35.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct\", last_verified = \"2026-07-15\" }\n\n# --- source: 60-models/90-hosted-gemma-cohere-xai-groq.toml ---\n# Gemma 4 — hosted (Apache 2.0, multimodal text+image, 256K context, native\n# thinking). The 12B is on-device only; the 26B MoE and 31B dense are also served\n# directly by hosted APIs. Each provider route is registered as its own catalog\n# row keyed by that provider's wire id (the alias-validation contract requires a\n# matching row): OpenRouter ids are org-prefixed and the Gemini API rows use the\n# `models/` REST resource name — both collision-free with the bare `local` keys.\n[models.\"google/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.12, output_per_mtok = 0.37 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"google/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.06, output_per_mtok = 0.33 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"models/gemma-4-31b-it\"]\nname = \"Gemma 4 31B (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\", \"cheap\"]\n[models.\"models/gemma-4-26b-a4b-it\"]\nname = \"Gemma 4 26B MoE (Gemini API)\"\nprovider = \"gemini\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"cheap\", \"speed\"]\n[models.\"google/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"coding\"]\n\n[models.\"groq/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-05\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"groq/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"openai/gpt-oss-20b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-20\" }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# Fireworks-hosted gpt-oss routes. Without a catalog row the wire id\n# `accounts/fireworks/models/gpt-oss-*` has NO context window, so the\n# agent's auto-compaction budget falls back to a placeholder and the prompt\n# can grow until Fireworks rejects the turn with HTTP 400 [context_overflow]\n# (\"maximum context length of 131071\"). Cataloging the real 131072-token\n# window lets compaction trigger before the hard limit. Verified against the\n# Fireworks-served gpt-oss spec (131072 ctx; the overflow error itself names\n# the 131071 ceiling).\n[models.\"accounts/fireworks/models/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/gpt-oss-120b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-19\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"accounts/fireworks/models/glm-5p2\"]\nname = \"GLM 5.2 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p2\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/deepseek-v4-pro\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Fireworks serverless rate verified 2026-07-02: $1.74/$3.48 (cached\n# input $0.145). The prior 0.60/1.20 figures matched no published tier.\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p6\"]\nname = \"Kimi K2.6 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p6\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p7-code\"]\nname = \"Kimi K2.7 Code (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p7-code\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Base serverless tier verified 2026-07-02; Fireworks also sells\n# Priority/Fast tiers up to $1.90/$8.00 that this rate card omits.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"accounts/fireworks/models/minimax-m3\"]\nname = \"MiniMax M3 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 524288\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/minimax-m3\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n# Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/\n# deprecations (verified 2026-07-02); llama-4-scout and qwen3-32b go\n# 2026-07-17. qwen/qwen3.6-27b below is the current Groq speed route\n# for agentic coding.\n[models.\"llama-3.3-70b-versatile\"]\nname = \"Llama 3.3 70B Versatile (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.59, output_per_mtok = 0.79 }\nrate_limits = { rpm = 1000, tpm = 300000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 70.0, moe = false, license = \"Llama 3.3 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ndeprecated = true\ndeprecation_note = \"Groq retires llama-3.3-70b 2026-08-16 per console.groq.com/docs/deprecations. Use qwen/qwen3.6-27b on Groq or llama-3.1-8b-instant for the cheap tier.\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\"]\n\n[models.\"qwen/qwen3.6-27b\"]\nname = \"Qwen3.6 27B (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"groq-lpu\"\nwire_model = \"qwen/qwen3.6-27b\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\n# ~500 output tok/s on Groq LPUs; rate verified 2026-07-02 on\n# groq.com/pricing. Dense 27B, hybrid Gated DeltaNet+Attention; SWE-bench\n# Verified 77.2 per the Qwen3.6-27B model card.\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00 }\narchitecture = { parameter_count_b = 27.0, moe = false, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.6-27B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 77.2 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"tool_use\", \"agentic\"]\n\n[models.\"llama-3.1-8b-instant\"]\nname = \"Llama 3.1 8B Instant (Groq)\"\nprovider = \"groq\"\ncontext_window = 131072\nlogical_model = \"llama-3.1-8b-instruct\"\nequivalence_group = \"llama-3.1-8b-instruct\"\nserved_variant = \"groq-lpu\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.08 }\nrate_limits = { rpm = 1000, tpm = 250000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\narchitecture = { parameter_count_b = 8.0, moe = false, license = \"Llama 3.1 Community\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-06-05\" }\ntier = \"small\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\"]\n\n# Cohere and xAI first-party routes. Both are OpenAI-compatible enough for\n# Harn's chat-completions adapter, but their economics are unusual: Command A+\n# is free up to account limits, while xAI's coding model exposes very high TPM\n# on regional clusters.\n[models.\"command-a-plus-05-2026\"]\nname = \"Command A+\"\nprovider = \"cohere\"\ncontext_window = 128000\nlogical_model = \"command-a-plus-05-2026\"\nequivalence_group = \"command-a-plus-05-2026\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 10.00 }\nrate_limits = { rpm = 20, tier = \"trial\", source_url = \"https://docs.cohere.com/docs/rate-limits\", last_verified = \"2026-06-05\", notes = \"Command A+ trial keys are 20 RPM and 1,000 calls/month; production is sales-gated. Token pricing is the public Command A+ API tariff.\" }\narchitecture = { parameter_count_b = 111.0, moe = true, source_url = \"https://docs.cohere.com/docs/command-a-plus\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"multilingual\", \"vision\"]\n\n[models.\"grok-4.3\"]\nname = \"Grok 4.3\"\nprovider = \"xai\"\ncontext_window = 1000000\nlogical_model = \"grok-4.3\"\nequivalence_group = \"grok-4.3\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 2.50, cache_read_per_mtok = 0.20 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"grok-build-0.1\"]\nname = \"Grok Build 0.1\"\nprovider = \"xai\"\ncontext_window = 256000\nlogical_model = \"grok-code-fast-1\"\nequivalence_group = \"grok-code-fast-1\"\napi_dialect = \"openai_chat_compat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"vision\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 2.00, cache_read_per_mtok = 0.20 }\nrate_limits = { rpm = 1800, tpm = 10000000, tier = \"us-east-1\", source_url = \"https://docs.x.ai/developers/models/grok-code-fast-1\", last_verified = \"2026-06-05\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/91-bedrock-batch.toml ---\n# Conservative Bedrock batch catalog rows. Add a row only after AWS documents\n# batch inference support for the exact model and region combination; ordinary\n# Bedrock Converse availability is intentionally broader than this list.\n\n[models.\"anthropic.claude-sonnet-4-5-20250929-v1:0\"]\nname = \"Claude Sonnet 4.5 (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"meta.llama3-1-70b-instruct-v1:0\"]\nname = \"Llama 3.1 70B Instruct (Amazon Bedrock)\"\nprovider = \"bedrock\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"general\", \"tool_use\"]\n\n# --- source: 60-models/92-vertex.toml ---\n# Stable Vertex AI Gemini route. The collision-free catalog id keeps the\n# direct Gemini API row distinct while `wire_model` carries the model id used\n# by Vertex's generateContent endpoint.\n[models.\"vertex/gemini-2.5-flash\"]\nname = \"Gemini 2.5 Flash (Vertex AI)\"\nprovider = \"vertex\"\ncontext_window = 1048576\nlogical_model = \"gemini-2.5-flash\"\nequivalence_group = \"gemini-2.5-flash\"\nserved_variant = \"vertex\"\nwire_model = \"gemini-2.5-flash\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"long_context\", \"vision\", \"cheap\", \"tool_use\", \"agentic\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"qwen\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/95-moonshot-deepinfra-sambanova.toml ---\n# Direct first-party / fast-inference routes for models also available through\n# aggregator providers.\n#\n# Each row is keyed by a `provider/` selector so it stays\n# collision-free with the same weights hosted elsewhere (e.g. the\n# OpenRouter/Together `moonshotai/kimi-k2.6` rows). `normalize_model_id`\n# strips the leading known-provider segment, and `wire_model` records the\n# exact id sent on the wire for clarity.\n#\n# Structure note: this fragment opens with a `[models.X]` header (not a\n# bare defaults block) so it does not collide with the trailing defaults\n# block of the preceding fragment. Each model's `tier`/`open_weight`/\n# `strengths`/`complementary_with` defaults trail its own table.\n\n# ---------- Moonshot AI — direct Kimi K2 routes -------------------------------\n[models.\"moonshot/kimi-k2.6\"]\nname = \"Kimi K2.6 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k3\"]\nname = \"Kimi K3 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k3\"\nlogical_model = \"moonshot-kimi-k3\"\nequivalence_group = \"moonshot-kimi-k3\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# Moonshot K3 tariff: $0.30 cache hit / $3.00 cache miss input and $15.00\n# output per MTok. This frontier route is catalogued but intentionally has no\n# automatic/QC/eval placement.\npricing = { input_per_mtok = 3.00, output_per_mtok = 15.00, cache_read_per_mtok = 0.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"moonshot/kimi-k2.7-code\"]\nname = \"Kimi K2.7 Code (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# First-party tariff verified 2026-07-02: $0.95 / $4.00 per MTok\n# (cache hit $0.19), matching the Fireworks/Baseten/Together list rate\n# for the same weights. The prior 0.80/3.20 row was stale.\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.19 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# Highspeed tariff not published on the per-model pricing page as of\n# 2026-07-02; the row below keeps the last-known figures.\n[models.\"moonshot/kimi-k2.7-code-highspeed\"]\nname = \"Kimi K2.7 Code Highspeed (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.7-code-highspeed\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"moonshot-direct-highspeed\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.80, output_per_mtok = 3.20, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n# ---------- DeepInfra — open-weight OpenAI-compatible host --------------------\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra catalog rate verified 2026-07-02 (fp4 serving): $1.30/$2.60.\n# The prior 0.50/1.50 figures matched no published DeepInfra tariff.\npricing = { input_per_mtok = 1.30, output_per_mtok = 2.60 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n# DeepSeek V4 Flash on DeepInfra — the budget 1M-context agent route\n# (fp4). Catalog rate verified 2026-07-02: $0.09/$0.18 vs $0.14/$0.28\n# first-party.\n[models.\"deepinfra/deepseek-ai/DeepSeek-V4-Flash\"]\nname = \"DeepSeek V4 Flash (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Flash\"\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.18 }\narchitecture = { parameter_count_b = 284.0, active_parameter_count_b = 13.0, moe = true, quantization = \"fp4\", license = \"MIT\", source_url = \"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash\", last_verified = \"2026-07-02\" }\n# tier matches the deepseek-v4-flash equivalence group (mid across hosts).\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-35B-A3B\"]\nname = \"Qwen3.6 35B A3B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-35B-A3B\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.30 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/deepseek-ai/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"deepseek-ai/DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 1.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"deepinfra/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra's published GLM-5.2 rate, verified 2026-06-28 against their pricing\n# API (cents_per_input_token 9.5e-05 -> $0.95/MTok; cents_per_output_token\n# 3e-04 -> $3.00/MTok; cached-read ratio -> $0.18/MTok) and reconciled against a\n# live chat-completion `estimated_cost` (175 in + 36 out billed $0.00027425,\n# exact). OpenRouter's z-ai/glm-5.2 listing agrees ($0.95/$3.00/$0.18). The prior\n# 1.40/4.40/0.26 was the together/baseten placeholder, not DeepInfra's rate.\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.00, cache_read_per_mtok = 0.18 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/Qwen/Qwen3.7-Max\"]\nname = \"Qwen3.7 Max (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.7-Max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.25, output_per_mtok = 3.75, cache_read_per_mtok = 0.125 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"deepinfra/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\n# DeepInfra undercuts the first-party $0.95/$4.00 list; verified\n# 2026-07-02 (int4-native weights).\npricing = { input_per_mtok = 0.74, output_per_mtok = 3.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"deepinfra/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.15, output_per_mtok = 0.60 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n# ---------- SambaNova Cloud — fast RDU inference ------------------------------\n[models.\"sambanova/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 163840\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/DeepSeek-V3.2 or another DeepSeek V4 Pro host.\"\nsuperseded_by = \"sambanova/DeepSeek-V3.2\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/DeepSeek-V3.2\"]\nname = \"DeepSeek V3.2 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"DeepSeek-V3.2\"\nlogical_model = \"deepseek-v3.2\"\nequivalence_group = \"deepseek-v3.2\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 3.00, output_per_mtok = 4.50 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"reasoning\", \"coding\", \"tool_use\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"sambanova/MiniMax-M2.7\"]\nname = \"MiniMax M2.7 (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"MiniMax-M2.7\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"sambanova/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.22, output_per_mtok = 0.59 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"sambanova/gemma-4-31B-it\"]\nname = \"Gemma 4 31B (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"gemma-4-31B-it\"\nlogical_model = \"gemma-4-31b-it\"\nequivalence_group = \"gemma-4-31b-it\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.38, output_per_mtok = 1.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"reasoning\", \"coding\", \"cheap\"]\n\n[models.\"sambanova/Llama-4-Maverick\"]\nname = \"Llama 4 Maverick (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Llama-4-Maverick-17B-128E-Instruct\"\nlogical_model = \"llama-4-maverick\"\nequivalence_group = \"llama-4-maverick\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"vision\", \"streaming\"]\npricing = { input_per_mtok = 0.63, output_per_mtok = 1.80 }\ndeprecated = true\ndeprecation_note = \"Not returned from SambaNova /v1/models on 2026-06-20. Use sambanova/Meta-Llama-3.3-70B-Instruct for the live Llama route.\"\nsuperseded_by = \"sambanova/Meta-Llama-3.3-70B-Instruct\"\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"vision\", \"tool_use\", \"long_context\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n[models.\"sambanova/Meta-Llama-3.3-70B-Instruct\"]\nname = \"Llama 3.3 70B Instruct (SambaNova)\"\nprovider = \"sambanova\"\nwire_model = \"Meta-Llama-3.3-70B-Instruct\"\nlogical_model = \"llama-3.3-70b-instruct\"\nequivalence_group = \"llama-3.3-70b-instruct\"\nserved_variant = \"sambanova-rdu\"\napi_dialect = \"openai_chat\"\ncontext_window = 131072\ncapabilities = [\"tools\", \"streaming\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 1.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"tool_use\", \"cheap\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"deepseek\", \"kimi\"]\n\n# --- source: 60-models/96-nvidia.toml ---\n# NVIDIA NIM hosted LLM routes. The API Catalog exposes 100+ OpenAI-compatible\n# model IDs; Harn catalogues the current agent/coding routes that are useful as\n# first-class selectors and lets the live refresh workflow surface the rest.\n\n[models.\"nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-ultra-550b-a55b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b\"]\nname = \"Nemotron 3 Super 120B A12B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 1048576\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-super-120b-a12b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"agentic\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\", \"speed\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"nvidia/nemotron-3-nano-30b-a3b\"]\nname = \"Nemotron 3 Nano 30B A3B (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-30b-a3b\"\nequivalence_group = \"nemotron-3-nano-30b-a3b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-30b-a3b/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\"]\nname = \"Nemotron 3 Nano Omni 30B A3B Reasoning (NVIDIA NIM)\"\nprovider = \"nvidia\"\ncontext_window = 262144\nlogical_model = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nequivalence_group = \"nemotron-3-nano-omni-30b-a3b-reasoning\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"audio\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 30.0, active_parameter_count_b = 3.0, moe = true, source_url = \"https://build.nvidia.com/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning/modelcard\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"vision\", \"reasoning\", \"tool_use\", \"summarization\", \"long_context\"]\n\n[models.\"nvidia/deepseek-v4-pro\"]\nname = \"DeepSeek V4 Pro (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-pro\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/deepseek-v4-flash\"]\nname = \"DeepSeek V4 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"deepseek-ai/deepseek-v4-flash\"\ncontext_window = 1048576\nlogical_model = \"deepseek-v4-flash\"\nequivalence_group = \"deepseek-v4-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"nvidia/minimax-m3\"]\nname = \"MiniMax M3 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m3\"\ncontext_window = 1048576\nlogical_model = \"minimax-m3\"\nequivalence_group = \"minimax-m3\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"nvidia/minimax-m2.7\"]\nname = \"MiniMax M2.7 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"minimaxai/minimax-m2.7\"\ncontext_window = 196608\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.20, cache_read_per_mtok = 0.06 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/kimi-k2.6\"]\nname = \"Kimi K2.6 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"moonshotai/kimi-k2.6\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.50, cache_read_per_mtok = 0.15 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"nvidia/mistral-medium-3.5-128b\"]\nname = \"Mistral Medium 3.5 128B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"mistralai/mistral-medium-3.5-128b\"\ncontext_window = 262144\nlogical_model = \"mistral-medium-3.5-128b\"\nequivalence_group = \"mistral-medium-3.5-128b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\"]\narchitecture = { parameter_count_b = 128.0, source_url = \"https://build.nvidia.com/models\", last_verified = \"2026-06-20\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\"]\n\n[models.\"nvidia/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-120b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-120b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"openai/gpt-oss-20b\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-06-20\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"nvidia/z-ai/glm-5.1\"]\nname = \"GLM 5.1 (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"z-ai/glm-5.1\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"nvidia/step-3.7-flash\"]\nname = \"Step 3.7 Flash (NVIDIA NIM)\"\nprovider = \"nvidia\"\nwire_model = \"stepfun-ai/step-3.7-flash\"\ncontext_window = 131072\nlogical_model = \"step-3.7-flash\"\nequivalence_group = \"step-3.7-flash\"\nserved_variant = \"nvidia-nim\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/97-baseten.toml ---\n# Baseten Model APIs. Live /v1/models verified 2026-06-23 with\n# BASETEN_API_KEY: ids, served context windows, pricing, features, modalities,\n# and route quantization come from the provider-owned endpoint. Rows are keyed\n# with `baseten/` so failover/eval tooling can compare the same\n# weights across Baseten, Z.AI, Together, DeepInfra, OpenRouter, and NVIDIA.\n\n[models.\"baseten/zai-org/GLM-5.2\"]\nname = \"GLM 5.2 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.2\"\nlogical_model = \"glm-5.2\"\nequivalence_group = \"glm-5.2\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.40, output_per_mtok = 4.40, cache_read_per_mtok = 0.26 }\narchitecture = { parameter_count_b = 744.0, active_parameter_count_b = 40.0, moe = true, quantization = \"fp8\", license = \"MIT\", source_url = \"https://www.baseten.co/blog/how-we-built-the-worlds-fastest-api-for-glm-52/\", last_verified = \"2026-06-23\" }\nperformance = { output_tokens_per_sec = 281.2, time_to_answer_s = 7.95, source = \"artificial_analysis\", source_url = \"https://artificialanalysis.ai/models/glm-5-2/providers\", last_verified = \"2026-06-23\", notes = \"Artificial Analysis GLM-5.2 provider benchmark; Harn 2026-06-23 smoke probes confirmed non-thinking and thinking Baseten calls plus native-tool unreliability.\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"kimi\", \"deepseek\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.7-Code\"]\nname = \"Kimi K2.7 Code (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.7-Code\"\nlogical_model = \"moonshot-kimi-k2.7-code\"\nequivalence_group = \"moonshot-kimi-k2.7-code\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/library/kimi-k27-code/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\"]\n\n[models.\"baseten/deepseek-ai/DeepSeek-V4-Pro\"]\nname = \"DeepSeek V4 Pro (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"deepseek-ai/DeepSeek-V4-Pro\"\nlogical_model = \"deepseek-v4-pro\"\nequivalence_group = \"deepseek-v4-pro\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 131000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.74, output_per_mtok = 3.48, cache_read_per_mtok = 0.145 }\narchitecture = { parameter_count_b = 1600.0, active_parameter_count_b = 49.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/deepseek-v4/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"kimi\"]\n\n[models.\"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"]\nname = \"Nemotron 3 Ultra 550B A55B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\nlogical_model = \"nemotron-3-ultra-550b-a55b\"\nequivalence_group = \"nemotron-3-ultra-550b-a55b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.40, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 550.0, active_parameter_count_b = 55.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-ultra/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/nvidia/Nemotron-120B-A12B\"]\nname = \"Nemotron 3 Super 120B A12B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"nvidia/Nemotron-120B-A12B\"\nlogical_model = \"nemotron-3-super-120b-a12b\"\nequivalence_group = \"nemotron-3-super-120b-a12b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 0.75, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 120.0, active_parameter_count_b = 12.0, moe = true, quantization = \"fp4\", source_url = \"https://www.baseten.co/library/nemotron-3-super/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"reasoning\", \"coding\", \"agentic\", \"tool_use\", \"long_context\"]\ncomplementary_with = [\"anthropic-claude\", \"openai-gpt\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/openai/gpt-oss-120b\"]\nname = \"GPT-OSS 120B (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"openai/gpt-oss-120b\"\nlogical_model = \"openai-gpt-oss-120b\"\nequivalence_group = \"openai-gpt-oss-120b\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 128072\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.10, output_per_mtok = 0.50, cache_read_per_mtok = 0.10 }\narchitecture = { parameter_count_b = 117.0, active_parameter_count_b = 5.1, moe = true, quantization = \"fp4\", license = \"Apache-2.0\", source_url = \"https://www.baseten.co/library/gpt-oss-120b/\", last_verified = \"2026-06-23\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"coding\"]\ncomplementary_with = [\"anthropic-claude\", \"google-gemini\", \"qwen\", \"deepseek\", \"kimi\"]\n\n[models.\"baseten/zai-org/GLM-5.1\"]\nname = \"GLM 5.1 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5.1\"\nlogical_model = \"glm-5.1\"\nequivalence_group = \"glm-5.1\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.30, output_per_mtok = 4.30, cache_read_per_mtok = 0.26 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-5\"]\nname = \"GLM 5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-5\"\nlogical_model = \"glm-5\"\nequivalence_group = \"glm-5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 202800\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 3.15, cache_read_per_mtok = 0.20 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/zai-org/GLM-4.7\"]\nname = \"GLM 4.7 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"zai-org/GLM-4.7\"\nlogical_model = \"glm-4.7\"\nequivalence_group = \"glm-4.7\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 2.20, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.6\"\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.95, output_per_mtok = 4.00, cache_read_per_mtok = 0.16 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\", \"vision\"]\n\n[models.\"baseten/moonshotai/Kimi-K2.5\"]\nname = \"Kimi K2.5 (Baseten)\"\nprovider = \"baseten\"\nwire_model = \"moonshotai/Kimi-K2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"baseten-model-api\"\napi_dialect = \"openai_chat\"\ncontext_window = 262000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.00, cache_read_per_mtok = 0.12 }\narchitecture = { quantization = \"fp4\", source_url = \"https://www.baseten.co/pricing/\", last_verified = \"2026-06-23\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"vision\"]\n\n# --- source: 60-models/98-dashscope.toml ---\n# DashScope (Alibaba Model Studio, international endpoint) — first-party\n# Qwen routes. Pricing verified 2026-07-02 against\n# https://www.alibabacloud.com/help/en/model-studio/model-pricing.\n#\n# Rows are keyed `dashscope/` so they stay collision-free with\n# the same weights hosted elsewhere (e.g. the bare `qwen3.6-35b-a3b`\n# llamacpp row); `wire_model` records the exact id sent on the wire.\n#\n# DashScope bills per request at the tier the TOTAL input size lands in\n# (<=32K / <=128K / <=256K / <=1M); this catalog's single-rate-card shape\n# records the base <=32K tier, so long-context requests cost more than a\n# naive rate-card estimate. Implicit prompt caching bills cache hits at\n# 20% of the input rate (explicit caches at 10%); cache_read below uses\n# the implicit 20% figure.\n\n[models.\"dashscope/qwen3-coder-plus\"]\nname = \"Qwen3 Coder Plus (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-plus\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1048576\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\"]\n\n[models.\"dashscope/qwen3-coder-next\"]\nname = \"Qwen3 Coder Next (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3-coder-next\"\nlogical_model = \"qwen3-coder-next\"\nequivalence_group = \"qwen3-coder-next\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.50, cache_read_per_mtok = 0.06 }\narchitecture = { parameter_count_b = 80.0, active_parameter_count_b = 3.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3-Coder-Next\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 70.6, swe_bench_pro = 44.3 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"cheap\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"dashscope/qwen3.6-35b-a3b\"]\nname = \"Qwen3.6 35B A3B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.6-35b-a3b\"\nlogical_model = \"qwen3.6-35b-a3b\"\nequivalence_group = \"qwen3.6-35b-a3b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.375, output_per_mtok = 2.25, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"cheap\"]\n\n[models.\"dashscope/qwen3.5-397b-a17b\"]\nname = \"Qwen3.5 397B A17B (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.5-397b-a17b\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.12 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-02\" }\nbenchmarks = { swe_bench_verified = 76.4 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Qwen3.7-Max — Alibaba's closed frontier tier; flat (non-tiered) $2.50 /\n# $7.50 per MTok with a 1M window on DashScope.\n[models.\"dashscope/qwen3.7-max\"]\nname = \"Qwen3.7 Max (DashScope)\"\nprovider = \"dashscope\"\nwire_model = \"qwen3.7-max\"\nlogical_model = \"qwen3.7-max\"\nequivalence_group = \"qwen3.7-max\"\nserved_variant = \"dashscope\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.50, output_per_mtok = 7.50, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"long_context\", \"reasoning\"]\n\n# --- source: 60-models/99-gateway-regional-deltas.toml ---\n# Current provider/model deltas discovered in the July 2026 provider catalog\n# pass. Rows here are either new providers with official OpenAI-compatible APIs\n# or live catalog rows observed with provider API keys. Keep route-specific ids\n# collision-free and use `wire_model` for the exact provider payload where\n# needed.\n\n# Inception Labs Mercury routes.\n[models.\"mercury-2\"]\nname = \"Mercury 2\"\nprovider = \"inception\"\ncontext_window = 128000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 0.75 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"reasoning\", \"tool_use\", \"agentic\"]\n\n[models.\"mercury-coder-small\"]\nname = \"Mercury Coder Small\"\nprovider = \"inception\"\ncontext_window = 32768\ncapabilities = [\"tools\", \"streaming\"]\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"tool_use\"]\n\n# xAI direct and OpenRouter mirrors.\n[models.\"grok-4.5\"]\nname = \"Grok 4.5\"\nprovider = \"xai\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\nrate_limits = { source_url = \"https://docs.x.ai/developers/models\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"x-ai/grok-4.5\"]\nname = \"Grok 4.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 500000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 6.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5\"]\nname = \"GPT-5.5 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n# GPT-5.6 gateway routes. OpenRouter exposes standard and provider-managed Pro\n# slugs for each tier; Pro is a serving behavior, not an independent model\n# lineage, so both routes share the same equivalence group. The rows retain\n# OpenRouter's undiscounted public base rates; its current 50%-off promotion is\n# intentionally excluded from the durable catalog.\n[models.\"openai/gpt-5.6-sol\"]\nname = \"GPT-5.6 Sol (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-sol-pro\"]\nname = \"GPT-5.6 Sol Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-sol\"\nequivalence_group = \"gpt-5.6-sol\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 5.00, output_per_mtok = 30.00, cache_read_per_mtok = 0.50, cache_write_per_mtok = 6.25 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra\"]\nname = \"GPT-5.6 Terra (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-terra-pro\"]\nname = \"GPT-5.6 Terra Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-terra\"\nequivalence_group = \"gpt-5.6-terra\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 2.00, output_per_mtok = 12.00, cache_read_per_mtok = 0.20, cache_write_per_mtok = 2.50 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna\"]\nname = \"GPT-5.6 Luna (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.6-luna-pro\"]\nname = \"GPT-5.6 Luna Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\nlogical_model = \"gpt-5.6-luna\"\nequivalence_group = \"gpt-5.6-luna\"\nserved_variant = \"openrouter_pro\"\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.20, cache_read_per_mtok = 0.02, cache_write_per_mtok = 0.25 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.5-pro\"]\nname = \"GPT-5.5 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-pro\"]\nname = \"GPT-5.4 Pro (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1050000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 30.00, output_per_mtok = 180.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openai/gpt-5.4-mini\"]\nname = \"GPT-5.4 Mini (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.75, output_per_mtok = 4.50, cache_read_per_mtok = 0.075 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"cheap\"]\n\n[models.\"openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"anthropic/claude-opus-4.8-fast\"]\nname = \"Claude Opus 4.8 Fast (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 10.00, output_per_mtok = 50.00, cache_read_per_mtok = 1.00, cache_write_per_mtok = 12.50 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"agentic\", \"coding\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"openrouter/free\"]\nname = \"OpenRouter Free Router\"\nprovider = \"openrouter\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"cheap\", \"router\", \"tool_use\"]\nquality_tags = [\"free_tier\", \"aggregate_router\", \"avoid_reviewer\"]\n\n[models.\"cohere/north-mini-code:free\"]\nname = \"North Mini Code Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 256000\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"coding\", \"cheap\", \"tool_use\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"nvidia/nemotron-3-super-120b-a12b:free\"]\nname = \"Nemotron 3 Super 120B A12B Free (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.00, output_per_mtok = 0.00 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"long_context\"]\nquality_tags = [\"free_tier\", \"avoid_reviewer\"]\n\n[models.\"bytedance-seed/seed-2.0-lite\"]\nname = \"Seed 2.0 Lite (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 2.00 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"cheap\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.5-plus-20260420\"]\nname = \"Qwen3.5 Plus 20260420 (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.80, cache_write_per_mtok = 0.375 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"qwen/qwen3.6-max-preview\"]\nname = \"Qwen3.6 Max Preview (via OpenRouter)\"\nprovider = \"openrouter\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.04, output_per_mtok = 6.24, cache_write_per_mtok = 1.30 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\", \"long_context\"]\n\n[models.\"groq/compound\"]\nname = \"Groq Compound\"\nprovider = \"groq\"\nwire_model = \"groq/compound\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"speed\", \"agentic\"]\n\n[models.\"groq/compound-mini\"]\nname = \"Groq Compound Mini\"\nprovider = \"groq\"\nwire_model = \"groq/compound-mini\"\ncontext_window = 131072\ncapabilities = [\"streaming\"]\nrate_limits = { rpm = 200, tpm = 200000, tier = \"developer\", source_url = \"https://console.groq.com/docs/models\", last_verified = \"2026-07-09\", notes = \"Groq compound systems publish 8192 max completion tokens and about 450 output tokens/sec.\" }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"agentic\"]\n\n[models.\"moonshot/kimi-k2.5\"]\nname = \"Kimi K2.5 (Moonshot direct)\"\nprovider = \"moonshot\"\nwire_model = \"kimi-k2.5\"\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"moonshot-direct\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Moonshot /v1/models still lists kimi-k2.5, but Kimi K2.6 and K2.7 Code are the active agent routes.\"\nsuperseded_by = \"moonshot/kimi-k2.6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# Together serverless rows observed from GET /v1/models.\n[models.\"moonshotai/Kimi-K2.6\"]\nname = \"Kimi K2.6 (Together)\"\nprovider = \"together\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.6\"\nequivalence_group = \"moonshot-kimi-k2.6\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.20, output_per_mtok = 4.50, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"openai/gpt-oss-20b\"]\nname = \"GPT-OSS 20B (Together)\"\nprovider = \"together\"\ncontext_window = 131072\nlogical_model = \"openai-gpt-oss-20b\"\nequivalence_group = \"openai-gpt-oss-20b\"\nserved_variant = \"together\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.05, output_per_mtok = 0.20 }\narchitecture = { parameter_count_b = 21.0, active_parameter_count_b = 3.6, moe = true, license = \"Apache-2.0\", source_url = \"https://developers.openai.com/api/docs/models/gpt-oss-20b\", last_verified = \"2026-07-09\" }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"Qwen/Qwen3.7-Plus\"]\nname = \"Qwen3.7 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 1.28 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.6-Plus\"]\nname = \"Qwen3.6 Plus (Together)\"\nprovider = \"together\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.50, output_per_mtok = 3.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"reasoning\", \"coding\", \"tool_use\", \"long_context\"]\n\n[models.\"Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (Together)\"\nprovider = \"together\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.35 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n[models.\"zai-org/GLM-5\"]\nname = \"GLM 5 (Together)\"\nprovider = \"together\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 3.20 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\"]\n\n[models.\"together/nvidia/nemotron-3-ultra-550b-a55b\"]\nname = \"Nemotron 3 Ultra 550B A55B (Together)\"\nprovider = \"together\"\nwire_model = \"nvidia/nemotron-3-ultra-550b-a55b\"\ncontext_window = 512288\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.60, output_per_mtok = 3.60, cache_read_per_mtok = 0.20 }\ntier = \"frontier\"\nopen_weight = false\nstrengths = [\"reasoning\", \"tool_use\", \"long_context\"]\n\n# DeepInfra live model detail rows.\n[models.\"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"]\nname = \"Qwen3 Coder 480B A35B Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\"\nlogical_model = \"qwen3-coder-480b-a35b\"\nequivalence_group = \"qwen3-coder-480b-a35b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.30, output_per_mtok = 1.00, cache_read_per_mtok = 0.10 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"long_context\", \"agentic\", \"tool_use\"]\n\n[models.\"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507\"]\nname = \"Qwen3 235B A22B Instruct 2507 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3-235B-A22B-Instruct-2507\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"streaming\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.09, output_per_mtok = 0.10 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"cheap\", \"tool_use\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.6-27B\"]\nname = \"Qwen3.6 27B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.6-27B\"\nlogical_model = \"qwen3.6-27b\"\nequivalence_group = \"qwen3.6-27b\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"video\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.32, output_per_mtok = 3.20 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"vision\", \"long_context\"]\n\n[models.\"deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo\"]\nname = \"MiniMax M2.7 Turbo (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"MiniMaxAI/MiniMax-M2.7-Turbo\"\nlogical_model = \"minimax-m2.7\"\nequivalence_group = \"minimax-m2.7\"\nserved_variant = \"deepinfra-turbo\"\napi_dialect = \"openai_chat\"\ncontext_window = 196608\ncapabilities = [\"tools\", \"streaming\", \"thinking\"]\npricing = { input_per_mtok = 0.40, output_per_mtok = 2.00 }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"deepinfra/zai-org/GLM-4.6\"]\nname = \"GLM 4.6 (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"zai-org/GLM-4.6\"\nlogical_model = \"glm-4.6\"\nequivalence_group = \"glm-4.6\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 202752\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.43, output_per_mtok = 1.74, cache_read_per_mtok = 0.08 }\ntier = \"mid\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"cheap\", \"long_context\"]\n\n[models.\"deepinfra/Qwen/Qwen3.5-397B-A17B\"]\nname = \"Qwen3.5 397B A17B (DeepInfra)\"\nprovider = \"deepinfra\"\nwire_model = \"Qwen/Qwen3.5-397B-A17B\"\nserved_variant = \"deepinfra\"\napi_dialect = \"openai_chat\"\ncontext_window = 262144\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.45, output_per_mtok = 3.00, cache_read_per_mtok = 0.22 }\narchitecture = { parameter_count_b = 397.0, active_parameter_count_b = 17.0, moe = true, license = \"Apache-2.0\", source_url = \"https://huggingface.co/Qwen/Qwen3.5-397B-A17B\", last_verified = \"2026-07-09\" }\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"reasoning\", \"tool_use\", \"long_context\", \"vision\"]\n\n# Fireworks compatibility fill-ins returned by live model discovery.\n[models.\"accounts/fireworks/models/glm-5p1\"]\nname = \"GLM 5.1 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 202752\nlogical_model = \"glm-5.1\"\nequivalence_group = \"frontier-agent-coding\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/glm-5p1\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"streaming\", \"thinking\", \"prompt_caching\"]\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"long_context\"]\n\n[models.\"accounts/fireworks/models/kimi-k2p5\"]\nname = \"Kimi K2.5 (Fireworks)\"\nprovider = \"fireworks\"\ncontext_window = 262144\nlogical_model = \"moonshot-kimi-k2.5\"\nequivalence_group = \"moonshot-kimi-k2.5\"\nserved_variant = \"fireworks\"\nwire_model = \"accounts/fireworks/models/kimi-k2p5\"\napi_dialect = \"openai_chat\"\ncapabilities = [\"tools\", \"vision\", \"streaming\", \"thinking\", \"prompt_caching\"]\ndeprecated = true\ndeprecation_note = \"Fireworks still lists Kimi K2.5, but Kimi K2.6 and K2.7 Code are the active routes.\"\nsuperseded_by = \"accounts/fireworks/models/kimi-k2p6\"\ntier = \"frontier\"\nopen_weight = true\nstrengths = [\"coding\", \"agentic\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 60-models/99-vercel-ai-gateway.toml ---\n# Curated Vercel AI Gateway routes used by Harn's provider probes and Burin's\n# model picker. Catalog keys are provider-qualified to avoid colliding with\n# direct and OpenRouter routes; `wire_model` is the creator/model slug Vercel\n# expects. Prices and context windows come from the Gateway model catalog and\n# were verified on 2026-07-17.\n\n[models.\"vercel/openai/gpt-5.4-nano\"]\nname = \"GPT-5.4 Nano (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"openai/gpt-5.4-nano\"\nlogical_model = \"openai-gpt-5.4-nano\"\nequivalence_group = \"openai-gpt-5.4-nano\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 400000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.20, output_per_mtok = 1.25, cache_read_per_mtok = 0.02 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"tool_use\", \"reasoning\"]\n\n[models.\"vercel/anthropic/claude-haiku-4.5\"]\nname = \"Claude Haiku 4.5 (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"anthropic/claude-haiku-4.5\"\nlogical_model = \"anthropic-claude-haiku-4.5\"\nequivalence_group = \"anthropic-claude-haiku-4.5\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 200000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 1.00, output_per_mtok = 5.00, cache_read_per_mtok = 0.10, cache_write_per_mtok = 1.25 }\ntier = \"mid\"\nopen_weight = false\nstrengths = [\"speed\", \"coding\", \"agentic\", \"tool_use\", \"reasoning\", \"vision\"]\n\n[models.\"vercel/google/gemini-3.1-flash-lite-preview\"]\nname = \"Gemini 3.1 Flash Lite Preview (Vercel AI Gateway)\"\nprovider = \"vercel_ai_gateway\"\nwire_model = \"google/gemini-3.1-flash-lite-preview\"\nlogical_model = \"google-gemini-3.1-flash-lite-preview\"\nequivalence_group = \"google-gemini-3.1-flash-lite-preview\"\nserved_variant = \"vercel-ai-gateway\"\napi_dialect = \"openai_chat\"\ncontext_window = 1000000\ncapabilities = [\"tools\", \"vision\", \"files\", \"streaming\", \"thinking\", \"prompt_caching\"]\npricing = { input_per_mtok = 0.25, output_per_mtok = 1.50 }\ntier = \"small\"\nopen_weight = false\nstrengths = [\"speed\", \"cheap\", \"long_context\", \"tool_use\", \"reasoning\", \"vision\"]\n\n# --- source: 62-ladders/00-ladders.toml ---\n# ── Model ladders ────────────────────────────────────────────────────────────\n# Named model-fallback ladders resolved by a `ladder: \"\"` option on\n# `llm_call`. A ladder lowers onto the first-class routing chain: each step is\n# one transport attempt, and the loop advances to the NEXT step only on a\n# transport-class failure (connection / timeout / 429 / 5xx / throttled-empty).\n# Schema-validation failures never advance — they re-ask the same step's model.\n#\n# Steps are ordered cheapest/first to most-capable/last. `provider` is optional\n# and inferred from the model id (or the call's base provider) when omitted.\n# Model aliases (haiku / sonnet / opus, resolved via `[aliases]`) are allowed.\n\n[model_ladders.frugal]\nlabel = \"frugal: cheap-first with frontier escalation\"\nsteps = [\n { model = \"haiku\", label = \"cheap\" },\n { model = \"sonnet\", label = \"mid\" },\n { model = \"opus\", label = \"frontier\" },\n]\n"}}}}