feat(providers): expand ollama catalog with thinking-capable models (#58)

* feat(providers): expand ollama model catalog with thinking-capable models

Add commonly used local models with accurate capability flags:
- gemma4, gemma3: supports_thinking, supports_vision
- deepseek-r1: supports_thinking (fix missing flag)
- deepseek-v3: supports_tools
- qwen3, qwq: supports_thinking
- llama4: supports_vision
- llama3.3: supports_tools
- phi4: supports_tools

Previously only 6 models were listed and none had supports_thinking
(except deepseek-r1), causing the dashboard to hide thinking toggles
for models that actually support it.

* chore(providers): major cleanup — remove defunct providers and old models

Delete 21 defunct/obscure providers:
aion-labs, arcee-ai, deepcogito, eleutherai, essentialai, ibm-granite,
inception, inflection, kwaipilot, lemonade, liquid, morph, nex-agi,
nousresearch, prime-intellect, reka, relace, switchpoint, tngtech,
upstage, writer

Clean up 10 major providers — keep only latest generation models:
- anthropic: remove claude-3.5-sonnet (superseded by 4.x)
- openai: remove gpt-4o/4-turbo/3.5/o1/o3-mini (superseded by gpt-5/4.1/o3/o4-mini)
- gemini: remove 1.5-*/2.0-flash (superseded by 2.5/3.x)
- deepseek: remove coder/chat-v3-0324 (superseded by r1/v3)
- qwen: remove turbo/2.5-coder (superseded by qwen3)
- groq: remove old llama/mixtral/gemma (keep latest only)
- mistral: remove medium/nemo/pixtral-large (keep large/small/codestral)
- xai: remove grok-2 (superseded by grok-3/4)
- meta-llama: remove 3.x/guard (keep llama-4 + 3.3)
- ollama: rewrite with current models (gemma4, qwen3, qwq, llama4, etc)

Total: 90 → 48 models across major providers. All thinking-capable
models now have supports_thinking = true.

* chore: add pre-commit hook for automatic TOML formatting

- .githooks/pre-commit: runs taplo fmt on staged .toml files
- Makefile: add setup target + auto-configure hooks on first make
- .gitignore: add .make-setup-done and .sync_marker
This commit is contained in:
Evan authored and GitHub committed 2026-04-15 22:18:01 +09:00
1 parent 4979c355b2
commit 4f8dd2404d
36 files changed
+151 -1203

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Pre-commit hook: format staged TOML files with taplo
STAGED=$(git diff --cached --name-only --diff-filter=ACM | grep '\.toml$')
if [ -z "$STAGED" ]; then
exit 0
fi
if ! command -v taplo &>/dev/null; then
echo "taplo not found — install with: cargo install taplo-cli"
exit 1
fi
for f in $STAGED; do
if [ -f "$f" ]; then
taplo fmt "$f" 2>/dev/null
if ! git diff --quiet "$f"; then
echo "Formatted $f"
git add "$f"
fi
fi
done
+2
View File
@@ -3,3 +3,5 @@
__pycache__/ __pycache__/
*.pyc *.pyc
.env .env
.make-setup-done
.sync_marker
View File
Whitespace-only changes.
+13
View File
@@ -12,6 +12,19 @@ SKILLS_DIR := skills
PLUGINS_DIR := plugins PLUGINS_DIR := plugins
PROVIDERS_DIR := providers PROVIDERS_DIR := providers
# ── Setup ────────────────────────────────────────────────────────────────────
.PHONY: setup
setup: ## Configure git hooks for auto-formatting
git config core.hooksPath .githooks
@echo "Git hooks installed (.githooks/pre-commit)"
# Auto-configure hooks on first make invocation
-include .make-setup-done
.make-setup-done:
@git config core.hooksPath .githooks 2>/dev/null || true
@touch .make-setup-done
# ── Validation ──────────────────────────────────────────────────────────────── # ── Validation ────────────────────────────────────────────────────────────────
.PHONY: validate .PHONY: validate
+3 -1
View File
@@ -26,7 +26,9 @@ Answer questions directly. If you can look something up to give a better answer,
When the user asks a factual question, use web_search to find current information rather than relying on potentially outdated knowledge. Present findings clearly without dumping raw search results. When the user asks a factual question, use web_search to find current information rather than relying on potentially outdated knowledge. Present findings clearly without dumping raw search results.
Keep responses brief (2-4 paragraphs max) unless the user asks for detail.""" Keep responses brief (2-4 paragraphs max) unless the user asks for detail.
Always reply in the same language the user uses. Never literally translate proper nouns, product names, or technical terms (e.g. "Hello World", "LibreFang", "Agent OS" stay as-is)."""
[resources] [resources]
max_llm_tokens_per_hour = 100000 max_llm_tokens_per_hour = 100000
-48
View File
@@ -1,48 +0,0 @@
# aion-labs — auto-generated from OpenRouter API
[provider]
id = "aion-labs"
display_name = "Aion Labs"
api_key_env = "AION_LABS_API_KEY"
base_url = "https://api.aionlabs.ai/v1"
key_required = true
[[models]]
id = "aion-1.0"
display_name = "AionLabs: Aion-1.0"
tier = "frontier"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 4.0
output_cost_per_m = 8.0
supports_streaming = true
[[models]]
id = "aion-1.0-mini"
display_name = "AionLabs: Aion-1.0-Mini"
tier = "smart"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 0.7
output_cost_per_m = 1.4
supports_streaming = true
[[models]]
id = "aion-2.0"
display_name = "AionLabs: Aion-2.0"
tier = "smart"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 0.8
output_cost_per_m = 1.6
supports_streaming = true
[[models]]
id = "aion-rp-llama-3.1-8b"
display_name = "AionLabs: Aion-RP 1.0 (8B)"
tier = "smart"
context_window = 32768
max_output_tokens = 32768
input_cost_per_m = 0.8
output_cost_per_m = 1.6
supports_streaming = true
+1 -15
View File
@@ -1,5 +1,5 @@
# Anthropic — https://anthropic.com # Anthropic — https://anthropic.com
# Models: 7 # Models: 6
[provider] [provider]
id = "anthropic" id = "anthropic"
@@ -91,17 +91,3 @@ supports_vision = true
supports_streaming = true supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = [] aliases = []
[[models]]
id = "claude-3-5-sonnet-20241022"
display_name = "Claude 3.5 Sonnet"
tier = "smart"
context_window = 200000
max_output_tokens = 8192
input_cost_per_m = 3.0
output_cost_per_m = 15.0
supports_tools = true
supports_vision = true
supports_streaming = true
supports_thinking = true
aliases = []
-79
View File
@@ -1,79 +0,0 @@
# arcee-ai — auto-generated from OpenRouter API
[provider]
id = "arcee-ai"
display_name = "Arcee Ai"
api_key_env = "ARCEE_API_KEY"
base_url = "https://api.arcee.ai/v1"
key_required = true
[[models]]
id = "coder-large"
display_name = "Arcee AI: Coder Large"
tier = "smart"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.5
output_cost_per_m = 0.8
supports_streaming = true
[[models]]
id = "maestro-reasoning"
display_name = "Arcee AI: Maestro Reasoning"
tier = "smart"
context_window = 131072
max_output_tokens = 32000
input_cost_per_m = 0.9
output_cost_per_m = 3.3
supports_streaming = true
supports_thinking = true
[[models]]
id = "spotlight"
display_name = "Arcee AI: Spotlight"
tier = "fast"
context_window = 131072
max_output_tokens = 65537
input_cost_per_m = 0.18
output_cost_per_m = 0.18
supports_streaming = true
[[models]]
id = "trinity-large-preview:free"
display_name = "Arcee AI: Trinity Large Preview (free)"
tier = "fast"
context_window = 131000
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]]
id = "trinity-mini"
display_name = "Arcee AI: Trinity Mini"
tier = "fast"
context_window = 131072
max_output_tokens = 131072
input_cost_per_m = 0.045
output_cost_per_m = 0.15
supports_streaming = true
[[models]]
id = "trinity-mini:free"
display_name = "Arcee AI: Trinity Mini (free)"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]]
id = "virtuoso-large"
display_name = "Arcee AI: Virtuoso Large"
tier = "smart"
context_window = 131072
max_output_tokens = 64000
input_cost_per_m = 0.75
output_cost_per_m = 1.2
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# deepcogito — auto-generated from OpenRouter API
[provider]
id = "deepcogito"
display_name = "Deepcogito"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "cogito-v2.1-671b"
display_name = "Deep Cogito: Cogito v2.1 671B"
tier = "smart"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 1.25
output_cost_per_m = 1.25
supports_streaming = true
+1 -27
View File
@@ -1,5 +1,5 @@
# DeepSeek — https://deepseek.com # DeepSeek — https://deepseek.com
# Models: 4 # Models: 2
[provider] [provider]
id = "deepseek" id = "deepseek"
@@ -34,29 +34,3 @@ supports_vision = false
supports_streaming = true supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = ["deepseek-r1"] aliases = ["deepseek-r1"]
[[models]]
id = "deepseek-coder"
display_name = "DeepSeek Coder V2"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.14
output_cost_per_m = 0.28
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "deepseek-chat-v3-0324"
display_name = "DeepSeek V3 0324"
tier = "smart"
context_window = 64000
max_output_tokens = 8192
input_cost_per_m = 0.19999999999999998
output_cost_per_m = 0.77
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
-18
View File
@@ -1,18 +0,0 @@
# eleutherai — auto-generated from OpenRouter API
[provider]
id = "eleutherai"
display_name = "Eleutherai"
api_key_env = "KRATER_API_KEY"
base_url = "https://api.krater.ai/v1"
key_required = true
[[models]]
id = "llemma_7b"
display_name = "EleutherAI: Llemma 7b"
tier = "smart"
context_window = 4096
max_output_tokens = 4096
input_cost_per_m = 0.8
output_cost_per_m = 1.2
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# essentialai — auto-generated from OpenRouter API
[provider]
id = "essentialai"
display_name = "Essentialai"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "rnj-1-instruct"
display_name = "EssentialAI: Rnj 1 Instruct"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.15
output_cost_per_m = 0.15
supports_streaming = true
+3 -55
View File
@@ -1,5 +1,5 @@
# Google Gemini — https://ai.google.dev # Google Gemini — https://ai.google.dev
# Models: 10 # Models: 6
[provider] [provider]
id = "gemini" id = "gemini"
@@ -57,8 +57,8 @@ display_name = "Gemini 2.5 Flash Lite"
tier = "fast" tier = "fast"
context_window = 1048576 context_window = 1048576
max_output_tokens = 8192 max_output_tokens = 8192
input_cost_per_m = 0.09999999999999999 input_cost_per_m = 0.1
output_cost_per_m = 0.39999999999999997 output_cost_per_m = 0.4
supports_tools = true supports_tools = true
supports_vision = true supports_vision = true
supports_streaming = true supports_streaming = true
@@ -92,55 +92,3 @@ supports_vision = true
supports_streaming = true supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = ["flash"] aliases = ["flash"]
[[models]]
id = "gemini-2.0-flash"
display_name = "Gemini 2.0 Flash"
tier = "fast"
context_window = 1048576
max_output_tokens = 8192
input_cost_per_m = 0.075
output_cost_per_m = 0.3
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "gemini-2.0-flash-lite"
display_name = "Gemini 2.0 Flash Lite"
tier = "fast"
context_window = 1048576
max_output_tokens = 8192
input_cost_per_m = 0.075
output_cost_per_m = 0.30
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "gemini-1.5-pro"
display_name = "Gemini 1.5 Pro"
tier = "smart"
context_window = 2097152
max_output_tokens = 8192
input_cost_per_m = 1.25
output_cost_per_m = 5.00
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "gemini-1.5-flash"
display_name = "Gemini 1.5 Flash"
tier = "fast"
context_window = 1048576
max_output_tokens = 8192
input_cost_per_m = 0.075
output_cost_per_m = 0.30
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
+5 -96
View File
@@ -1,5 +1,5 @@
# Groq — https://groq.com # Groq — https://groq.com
# Models: 10 # Models: 3
[provider] [provider]
id = "groq" id = "groq"
@@ -22,96 +22,18 @@ supports_streaming = true
aliases = ["llama", "llama-70b"] aliases = ["llama", "llama-70b"]
[[models]] [[models]]
id = "llama-3.1-8b-instant" id = "meta-llama/llama-4-scout-17b-16e-instruct"
display_name = "Llama 3.1 8B" display_name = "Llama 4 Scout 17B"
tier = "fast"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.05
output_cost_per_m = 0.08
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "llama-3.2-90b-vision-preview"
display_name = "Llama 3.2 90B Vision"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.90
output_cost_per_m = 0.90
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "llama-3.2-11b-vision-preview"
display_name = "Llama 3.2 11B Vision"
tier = "balanced" tier = "balanced"
context_window = 128000 context_window = 128000
max_output_tokens = 8192 max_output_tokens = 8192
input_cost_per_m = 0.18 input_cost_per_m = 0.11
output_cost_per_m = 0.18 output_cost_per_m = 0.34
supports_tools = true supports_tools = true
supports_vision = true supports_vision = true
supports_streaming = true supports_streaming = true
aliases = [] aliases = []
[[models]]
id = "llama-3.2-3b-preview"
display_name = "Llama 3.2 3B"
tier = "fast"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.06
output_cost_per_m = 0.06
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "llama-3.2-1b-preview"
display_name = "Llama 3.2 1B"
tier = "fast"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.04
output_cost_per_m = 0.04
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "mixtral-8x7b-32768"
display_name = "Mixtral 8x7B"
tier = "balanced"
context_window = 32768
max_output_tokens = 4096
input_cost_per_m = 0.024
output_cost_per_m = 0.024
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["mixtral"]
[[models]]
id = "gemma2-9b-it"
display_name = "Gemma 2 9B"
tier = "fast"
context_window = 8192
max_output_tokens = 4096
input_cost_per_m = 0.02
output_cost_per_m = 0.02
supports_tools = false
supports_vision = false
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "qwen-qwq-32b" id = "qwen-qwq-32b"
display_name = "Qwen QWQ 32B" display_name = "Qwen QWQ 32B"
@@ -125,16 +47,3 @@ supports_vision = false
supports_streaming = true supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = [] aliases = []
[[models]]
id = "meta-llama/llama-4-scout-17b-16e-instruct"
display_name = "Llama 4 Scout 17B"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.11
output_cost_per_m = 0.34
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
-18
View File
@@ -1,18 +0,0 @@
# ibm-granite — auto-generated from OpenRouter API
[provider]
id = "ibm-granite"
display_name = "Ibm Granite"
api_key_env = "WATSONX_API_KEY"
base_url = "https://us-south.ml.cloud.ibm.com/ml/v1"
key_required = true
[[models]]
id = "granite-4.0-h-micro"
display_name = "IBM: Granite 4.0 Micro"
tier = "fast"
context_window = 131000
max_output_tokens = 16384
input_cost_per_m = 0.017
output_cost_per_m = 0.11
supports_streaming = true
-38
View File
@@ -1,38 +0,0 @@
# inception — auto-generated from OpenRouter API
[provider]
id = "inception"
display_name = "Inception"
api_key_env = "INCEPTION_API_KEY"
base_url = "https://api.inceptionlabs.ai/v1"
key_required = true
[[models]]
id = "mercury"
display_name = "Inception: Mercury"
tier = "fast"
context_window = 128000
max_output_tokens = 32000
input_cost_per_m = 0.25
output_cost_per_m = 0.75
supports_streaming = true
[[models]]
id = "mercury-2"
display_name = "Inception: Mercury 2"
tier = "fast"
context_window = 128000
max_output_tokens = 50000
input_cost_per_m = 0.25
output_cost_per_m = 0.75
supports_streaming = true
[[models]]
id = "mercury-coder"
display_name = "Inception: Mercury Coder"
tier = "fast"
context_window = 128000
max_output_tokens = 32000
input_cost_per_m = 0.25
output_cost_per_m = 0.75
supports_streaming = true
-28
View File
@@ -1,28 +0,0 @@
# inflection — auto-generated from OpenRouter API
[provider]
id = "inflection"
display_name = "Inflection"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "inflection-3-pi"
display_name = "Inflection: Inflection 3 Pi"
tier = "smart"
context_window = 8000
max_output_tokens = 1024
input_cost_per_m = 2.5
output_cost_per_m = 10.0
supports_streaming = true
[[models]]
id = "inflection-3-productivity"
display_name = "Inflection: Inflection 3 Productivity"
tier = "smart"
context_window = 8000
max_output_tokens = 1024
input_cost_per_m = 2.5
output_cost_per_m = 10.0
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# kwaipilot — auto-generated from OpenRouter API
[provider]
id = "kwaipilot"
display_name = "Kwaipilot"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "kat-coder-pro"
display_name = "Kwaipilot: KAT-Coder-Pro V1"
tier = "fast"
context_window = 256000
max_output_tokens = 128000
input_cost_per_m = 0.3
output_cost_per_m = 1.2
supports_streaming = true
-9
View File
@@ -1,9 +0,0 @@
# Lemonade — local NPU accelerated inference
# Models: 0 (all models discovered dynamically at runtime)
[provider]
id = "lemonade"
display_name = "Lemonade"
api_key_env = "LEMONADE_API_KEY"
base_url = "http://localhost:8888/api/v1"
key_required = false
-59
View File
@@ -1,59 +0,0 @@
# liquid — auto-generated from OpenRouter API
[provider]
id = "liquid"
display_name = "Liquid"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "lfm-2-24b-a2b"
display_name = "LiquidAI: LFM2-24B-A2B"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.03
output_cost_per_m = 0.12
supports_streaming = true
[[models]]
id = "lfm-2.2-6b"
display_name = "LiquidAI: LFM2-2.6B"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.01
output_cost_per_m = 0.02
supports_streaming = true
[[models]]
id = "lfm-2.5-1.2b-instruct:free"
display_name = "LiquidAI: LFM2.5-1.2B-Instruct (free)"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]]
id = "lfm-2.5-1.2b-thinking:free"
display_name = "LiquidAI: LFM2.5-1.2B-Thinking (free)"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
supports_thinking = true
[[models]]
id = "lfm2-8b-a1b"
display_name = "LiquidAI: LFM2-8B-A1B"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.01
output_cost_per_m = 0.02
supports_streaming = true
+4 -103
View File
@@ -1,4 +1,5 @@
# meta-llama — auto-generated from OpenRouter API # meta-llama — https://llama.com
# Models: 5
[provider] [provider]
id = "meta-llama" id = "meta-llama"
@@ -7,106 +8,6 @@ api_key_env = "LLAMA_API_KEY"
base_url = "https://api.llama.com/v1" base_url = "https://api.llama.com/v1"
key_required = true key_required = true
[[models]]
id = "llama-3-70b-instruct"
display_name = "Meta: Llama 3 70B Instruct"
tier = "smart"
context_window = 8192
max_output_tokens = 8000
input_cost_per_m = 0.51
output_cost_per_m = 0.74
supports_streaming = true
[[models]]
id = "llama-3-8b-instruct"
display_name = "Meta: Llama 3 8B Instruct"
tier = "fast"
context_window = 8192
max_output_tokens = 16384
input_cost_per_m = 0.03
output_cost_per_m = 0.04
supports_streaming = true
[[models]]
id = "llama-3.1-70b-instruct"
display_name = "Meta: Llama 3.1 70B Instruct"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.4
output_cost_per_m = 0.4
supports_streaming = true
[[models]]
id = "llama-3.1-8b-instruct"
display_name = "Meta: Llama 3.1 8B Instruct"
tier = "fast"
context_window = 16384
max_output_tokens = 16384
input_cost_per_m = 0.02
output_cost_per_m = 0.05
supports_streaming = true
[[models]]
id = "llama-3.2-11b-vision-instruct"
display_name = "Meta: Llama 3.2 11B Vision Instruct"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.245
output_cost_per_m = 0.245
supports_streaming = true
[[models]]
id = "llama-3.2-1b-instruct"
display_name = "Meta: Llama 3.2 1B Instruct"
tier = "fast"
context_window = 60000
max_output_tokens = 15000
input_cost_per_m = 0.027
output_cost_per_m = 0.2
supports_streaming = true
[[models]]
id = "llama-3.2-3b-instruct"
display_name = "Meta: Llama 3.2 3B Instruct"
tier = "fast"
context_window = 80000
max_output_tokens = 16384
input_cost_per_m = 0.051
output_cost_per_m = 0.34
supports_streaming = true
[[models]]
id = "llama-3.2-3b-instruct:free"
display_name = "Meta: Llama 3.2 3B Instruct (free)"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]]
id = "llama-3.3-70b-instruct"
display_name = "Meta: Llama 3.3 70B Instruct"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.1
output_cost_per_m = 0.32
supports_streaming = true
[[models]]
id = "llama-3.3-70b-instruct:free"
display_name = "Meta: Llama 3.3 70B Instruct (free)"
tier = "fast"
context_window = 65536
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]] [[models]]
id = "llama-4-maverick" id = "llama-4-maverick"
display_name = "Meta: Llama 4 Maverick" display_name = "Meta: Llama 4 Maverick"
@@ -128,8 +29,8 @@ output_cost_per_m = 0.3
supports_streaming = true supports_streaming = true
[[models]] [[models]]
id = "llama-guard-3-8b" id = "llama-3.3-70b-instruct"
display_name = "Llama Guard 3 8B" display_name = "Meta: Llama 3.3 70B Instruct"
tier = "fast" tier = "fast"
context_window = 131072 context_window = 131072
max_output_tokens = 16384 max_output_tokens = 16384
+1 -40
View File
@@ -1,5 +1,5 @@
# Mistral AI — https://mistral.ai # Mistral AI — https://mistral.ai
# Models: 6 # Models: 3
[provider] [provider]
id = "mistral" id = "mistral"
@@ -21,19 +21,6 @@ supports_vision = false
supports_streaming = true supports_streaming = true
aliases = ["mistral"] aliases = ["mistral"]
[[models]]
id = "mistral-medium-latest"
display_name = "Mistral Medium"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 2.70
output_cost_per_m = 8.10
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "mistral-small-latest" id = "mistral-small-latest"
display_name = "Mistral Small" display_name = "Mistral Small"
@@ -59,29 +46,3 @@ supports_tools = true
supports_vision = false supports_vision = false
supports_streaming = true supports_streaming = true
aliases = ["codestral"] aliases = ["codestral"]
[[models]]
id = "open-mistral-nemo"
display_name = "Mistral Nemo"
tier = "fast"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.15
output_cost_per_m = 0.15
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["mistral-nemo"]
[[models]]
id = "pixtral-large-latest"
display_name = "Pixtral Large"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 2.00
output_cost_per_m = 6.00
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = ["pixtral"]
-28
View File
@@ -1,28 +0,0 @@
# morph — auto-generated from OpenRouter API
[provider]
id = "morph"
display_name = "Morph"
api_key_env = "MORPH_API_KEY"
base_url = "https://api.morphllm.com/v1"
key_required = true
[[models]]
id = "morph-v3-fast"
display_name = "Morph: Morph V3 Fast"
tier = "smart"
context_window = 81920
max_output_tokens = 38000
input_cost_per_m = 0.8
output_cost_per_m = 1.2
supports_streaming = true
[[models]]
id = "morph-v3-large"
display_name = "Morph: Morph V3 Large"
tier = "smart"
context_window = 262144
max_output_tokens = 131072
input_cost_per_m = 0.9
output_cost_per_m = 1.9
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# nex-agi — auto-generated from OpenRouter API
[provider]
id = "nex-agi"
display_name = "Nex Agi"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "deepseek-v3.1-nex-n1"
display_name = "Nex AGI: DeepSeek V3.1 Nex N1"
tier = "fast"
context_window = 131072
max_output_tokens = 163840
input_cost_per_m = 0.135
output_cost_per_m = 0.5
supports_streaming = true
-68
View File
@@ -1,68 +0,0 @@
# nousresearch — auto-generated from OpenRouter API
[provider]
id = "nousresearch"
display_name = "Nousresearch"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "hermes-2-pro-llama-3-8b"
display_name = "NousResearch: Hermes 2 Pro - Llama-3 8B"
tier = "fast"
context_window = 8192
max_output_tokens = 8192
input_cost_per_m = 0.14
output_cost_per_m = 0.14
supports_streaming = true
[[models]]
id = "hermes-3-llama-3.1-405b"
display_name = "Nous: Hermes 3 405B Instruct"
tier = "smart"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 1.0
output_cost_per_m = 1.0
supports_streaming = true
[[models]]
id = "hermes-3-llama-3.1-405b:free"
display_name = "Nous: Hermes 3 405B Instruct (free)"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_streaming = true
[[models]]
id = "hermes-3-llama-3.1-70b"
display_name = "Nous: Hermes 3 70B Instruct"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.3
output_cost_per_m = 0.3
supports_streaming = true
[[models]]
id = "hermes-4-405b"
display_name = "Nous: Hermes 4 405B"
tier = "smart"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 1.0
output_cost_per_m = 3.0
supports_streaming = true
[[models]]
id = "hermes-4-70b"
display_name = "Nous: Hermes 4 70B"
tier = "fast"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.13
output_cost_per_m = 0.4
supports_streaming = true
+76 -60
View File
@@ -1,5 +1,5 @@
# Ollama — https://ollama.com # Ollama — https://ollama.com
# Models: 6 (static entries; additional models discovered dynamically at runtime) # Current-generation models only. Additional models are discovered dynamically at runtime.
[provider] [provider]
id = "ollama" id = "ollama"
@@ -9,80 +9,96 @@ base_url = "http://localhost:11434/v1"
key_required = false key_required = false
[[models]] [[models]]
id = "llama3.2" id = "gemma4"
display_name = "Llama 3.2 (Ollama)" display_name = "Gemma 4"
tier = "local" tier = "local"
context_window = 128000 context_window = 128000
max_output_tokens = 4096 max_output_tokens = 8192
input_cost_per_m = 0.0 input_cost_per_m = 0.0
output_cost_per_m = 0.0 output_cost_per_m = 0.0
supports_tools = true supports_tools = true
supports_vision = false supports_vision = true
supports_streaming = true supports_streaming = true
aliases = [] supports_thinking = true
aliases = ["gemma4:latest"]
[[models]]
id = "llama3.1"
display_name = "Llama 3.1 (Ollama)"
tier = "local"
context_window = 128000
max_output_tokens = 4096
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "mistral:latest"
display_name = "Mistral (Ollama)"
tier = "local"
context_window = 32768
max_output_tokens = 4096
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "qwen2.5"
display_name = "Qwen 2.5 (Ollama)"
tier = "local"
context_window = 32768
max_output_tokens = 4096
input_cost_per_m = 0.2
output_cost_per_m = 0.6
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "phi3"
display_name = "Phi-3 (Ollama)"
tier = "local"
context_window = 128000
max_output_tokens = 4096
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = false
supports_vision = false
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "deepseek-r1:latest" id = "deepseek-r1:latest"
display_name = "DeepSeek R1 (Ollama)" display_name = "DeepSeek R1"
tier = "local" tier = "local"
context_window = 64000 context_window = 64000
max_output_tokens = 4096 max_output_tokens = 8192
input_cost_per_m = 0.0 input_cost_per_m = 0.0
output_cost_per_m = 0.0 output_cost_per_m = 0.0
supports_tools = false supports_tools = false
supports_vision = false supports_vision = false
supports_streaming = true supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = ["deepseek-r1"]
[[models]]
id = "qwen3"
display_name = "Qwen 3"
tier = "local"
context_window = 40960
max_output_tokens = 8192
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = ["qwen3:latest"]
[[models]]
id = "qwq"
display_name = "QwQ"
tier = "local"
context_window = 40960
max_output_tokens = 8192
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = ["qwq:latest"]
[[models]]
id = "llama4"
display_name = "Llama 4"
tier = "local"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = ["llama4:latest"]
[[models]]
id = "mistral:latest"
display_name = "Mistral"
tier = "local"
context_window = 32768
max_output_tokens = 4096
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = [] aliases = []
[[models]]
id = "phi4"
display_name = "Phi-4"
tier = "local"
context_window = 16384
max_output_tokens = 4096
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["phi4:latest"]
+1 -67
View File
@@ -1,5 +1,5 @@
# OpenAI — https://openai.com # OpenAI — https://openai.com
# Models: 18 (including 2 Codex variants) # Models: 13 (including 2 Codex variants)
[provider] [provider]
id = "openai" id = "openai"
@@ -9,32 +9,6 @@ base_url = "https://api.openai.com/v1"
key_required = true key_required = true
media_capabilities = ["image_generation", "text_to_speech"] media_capabilities = ["image_generation", "text_to_speech"]
[[models]]
id = "gpt-4o"
display_name = "GPT-4o"
tier = "smart"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 2.50
output_cost_per_m = 10.0
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = ["gpt4", "gpt4o"]
[[models]]
id = "gpt-4o-mini"
display_name = "GPT-4o Mini"
tier = "fast"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 0.15
output_cost_per_m = 0.60
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = ["gpt4-mini"]
[[models]] [[models]]
id = "gpt-4.1" id = "gpt-4.1"
display_name = "GPT-4.1" display_name = "GPT-4.1"
@@ -88,20 +62,6 @@ supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = [] aliases = []
[[models]]
id = "o3-mini"
display_name = "o3-mini"
tier = "smart"
context_window = 200000
max_output_tokens = 100000
input_cost_per_m = 1.10
output_cost_per_m = 4.40
supports_tools = true
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = []
[[models]] [[models]]
id = "o4-mini" id = "o4-mini"
display_name = "o4-mini" display_name = "o4-mini"
@@ -116,32 +76,6 @@ supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = [] aliases = []
[[models]]
id = "gpt-4-turbo"
display_name = "GPT-4 Turbo"
tier = "smart"
context_window = 128000
max_output_tokens = 4096
input_cost_per_m = 10.00
output_cost_per_m = 30.00
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "gpt-3.5-turbo"
display_name = "GPT-3.5 Turbo"
tier = "fast"
context_window = 16385
max_output_tokens = 4096
input_cost_per_m = 0.5
output_cost_per_m = 1.5
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "gpt-5" id = "gpt-5"
display_name = "GPT-5" display_name = "GPT-5"
-18
View File
@@ -1,18 +0,0 @@
# prime-intellect — auto-generated from OpenRouter API
[provider]
id = "prime-intellect"
display_name = "Prime Intellect"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "intellect-3"
display_name = "Prime Intellect: INTELLECT-3"
tier = "fast"
context_window = 131072
max_output_tokens = 131072
input_cost_per_m = 0.2
output_cost_per_m = 1.1
supports_streaming = true
+18 -57
View File
@@ -1,5 +1,5 @@
# Qwen / Alibaba — https://dashscope.aliyuncs.com # Qwen / Alibaba — https://dashscope.aliyuncs.com
# Models: 11 # Models: 9
# Regions: china (default), intl (Singapore), us (Virginia) # Regions: china (default), intl (Singapore), us (Virginia)
[provider] [provider]
@@ -41,19 +41,6 @@ supports_vision = false
supports_streaming = true supports_streaming = true
aliases = ["qwen"] aliases = ["qwen"]
[[models]]
id = "qwen-turbo"
display_name = "Qwen Turbo"
tier = "fast"
context_window = 131072
max_output_tokens = 8192
input_cost_per_m = 0.0325
output_cost_per_m = 0.13
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "qwen-vl-plus" id = "qwen-vl-plus"
display_name = "Qwen VL Plus" display_name = "Qwen VL Plus"
@@ -61,15 +48,28 @@ tier = "smart"
context_window = 32768 context_window = 32768
max_output_tokens = 8192 max_output_tokens = 8192
input_cost_per_m = 0.1365 input_cost_per_m = 0.1365
output_cost_per_m = 0.40950000000000003 output_cost_per_m = 0.4095
supports_tools = false supports_tools = false
supports_vision = true supports_vision = true
supports_streaming = true supports_streaming = true
aliases = [] aliases = []
[[models]] [[models]]
id = "qwen-coder-plus" id = "qwen-vl-max"
display_name = "Qwen Coder Plus" display_name = "Qwen VL Max"
tier = "frontier"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.52
output_cost_per_m = 2.08
supports_tools = false
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "qwen-coder-plus-latest"
display_name = "Qwen Coder Plus (Latest)"
tier = "smart" tier = "smart"
context_window = 131072 context_window = 131072
max_output_tokens = 8192 max_output_tokens = 8192
@@ -78,7 +78,7 @@ output_cost_per_m = 2.00
supports_tools = true supports_tools = true
supports_vision = false supports_vision = false
supports_streaming = true supports_streaming = true
aliases = [] aliases = ["qwen-coder"]
[[models]] [[models]]
id = "qwen-long" id = "qwen-long"
@@ -121,45 +121,6 @@ supports_streaming = true
supports_thinking = true supports_thinking = true
aliases = [] aliases = []
[[models]]
id = "qwen-coder-plus-latest"
display_name = "Qwen Coder Plus (Latest)"
tier = "smart"
context_window = 131072
max_output_tokens = 8192
input_cost_per_m = 0.80
output_cost_per_m = 2.00
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["qwen-coder"]
[[models]]
id = "qwen2.5-coder-32b-instruct"
display_name = "Qwen 2.5 Coder 32B"
tier = "balanced"
context_window = 131072
max_output_tokens = 8192
input_cost_per_m = 0.80
output_cost_per_m = 2.00
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "qwen-vl-max"
display_name = "Qwen VL Max"
tier = "frontier"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.52
output_cost_per_m = 2.08
supports_tools = false
supports_vision = true
supports_streaming = true
aliases = []
[[models]] [[models]]
id = "tongyi-deepresearch-30b-a3b" id = "tongyi-deepresearch-30b-a3b"
display_name = "Tongyi DeepResearch 30B A3B" display_name = "Tongyi DeepResearch 30B A3B"
-28
View File
@@ -1,28 +0,0 @@
# reka — auto-generated from OpenRouter API
[provider]
id = "reka"
display_name = "Reka"
api_key_env = "REKA_API_KEY"
base_url = "https://api.reka.ai/v1"
key_required = true
[[models]]
id = "reka-edge"
display_name = "Reka Edge"
tier = "fast"
context_window = 16384
max_output_tokens = 16384
input_cost_per_m = 0.1
output_cost_per_m = 0.1
supports_streaming = true
[[models]]
id = "reka-flash-3"
display_name = "Reka: Flash 3"
tier = "fast"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 0.1
output_cost_per_m = 0.2
supports_streaming = true
-28
View File
@@ -1,28 +0,0 @@
# relace — auto-generated from OpenRouter API
[provider]
id = "relace"
display_name = "Relace"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "relace-apply-3"
display_name = "Relace: Relace Apply 3"
tier = "smart"
context_window = 256000
max_output_tokens = 128000
input_cost_per_m = 0.85
output_cost_per_m = 1.25
supports_streaming = true
[[models]]
id = "relace-search"
display_name = "Relace: Relace Search"
tier = "smart"
context_window = 256000
max_output_tokens = 128000
input_cost_per_m = 1.0
output_cost_per_m = 3.0
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# switchpoint — auto-generated from OpenRouter API
[provider]
id = "switchpoint"
display_name = "Switchpoint"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "router"
display_name = "Switchpoint Router"
tier = "smart"
context_window = 131072
max_output_tokens = 16384
input_cost_per_m = 0.85
output_cost_per_m = 3.4
supports_streaming = true
-19
View File
@@ -1,19 +0,0 @@
# tngtech — auto-generated from OpenRouter API
[provider]
id = "tngtech"
display_name = "Tngtech"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "deepseek-r1t2-chimera"
display_name = "TNG: DeepSeek R1T2 Chimera"
tier = "fast"
context_window = 163840
max_output_tokens = 163840
input_cost_per_m = 0.3
output_cost_per_m = 1.1
supports_streaming = true
supports_thinking = true
-18
View File
@@ -1,18 +0,0 @@
# upstage — auto-generated from OpenRouter API
[provider]
id = "upstage"
display_name = "Upstage"
api_key_env = "UPSTAGE_API_KEY"
base_url = "https://api.upstage.ai/v1"
key_required = true
[[models]]
id = "solar-pro-3"
display_name = "Upstage: Solar Pro 3"
tier = "fast"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 0.15
output_cost_per_m = 0.6
supports_streaming = true
-61
View File
@@ -1,61 +0,0 @@
# Writer — https://writer.com
# Models: 4
[provider]
id = "writer"
display_name = "Writer"
api_key_env = "WRITER_API_KEY"
base_url = "https://api.writer.com/v1"
key_required = true
[[models]]
id = "palmyra-x5"
display_name = "Palmyra X5"
tier = "frontier"
context_window = 1048576
max_output_tokens = 8192
input_cost_per_m = 0.60
output_cost_per_m = 6.00
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = ["palmyra-x5", "writer-x5"]
[[models]]
id = "palmyra-x4"
display_name = "Palmyra X4"
tier = "smart"
context_window = 131072
max_output_tokens = 4096
input_cost_per_m = 2.50
output_cost_per_m = 10.00
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["palmyra-x4", "writer-x4"]
[[models]]
id = "palmyra-med"
display_name = "Palmyra Med"
tier = "smart"
context_window = 32768
max_output_tokens = 4096
input_cost_per_m = 5.00
output_cost_per_m = 12.00
supports_tools = false
supports_vision = false
supports_streaming = true
aliases = ["palmyra-med", "writer-med"]
[[models]]
id = "palmyra-fin"
display_name = "Palmyra Fin"
tier = "smart"
context_window = 131072
max_output_tokens = 4096
input_cost_per_m = 5.00
output_cost_per_m = 12.00
supports_tools = false
supports_vision = false
supports_streaming = true
aliases = ["palmyra-fin", "writer-fin"]
+1 -27
View File
@@ -1,5 +1,5 @@
# xAI — https://x.ai # xAI — https://x.ai
# Models: 9 # Models: 7
[provider] [provider]
id = "xai" id = "xai"
@@ -100,29 +100,3 @@ supports_tools = true
supports_vision = false supports_vision = false
supports_streaming = true supports_streaming = true
aliases = [] aliases = []
[[models]]
id = "grok-2"
display_name = "Grok 2"
tier = "smart"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 2.0
output_cost_per_m = 10.0
supports_tools = true
supports_vision = true
supports_streaming = true
aliases = []
[[models]]
id = "grok-2-mini"
display_name = "Grok 2 Mini"
tier = "fast"
context_window = 131072
max_output_tokens = 32768
input_cost_per_m = 0.30
output_cost_per_m = 0.50
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["grok-mini"]