fix(providers): remove ~anthropic, skip ~ prefixes in sync script (#69)

* fix(providers): remove ~anthropic, skip ~ prefixes in sync script

OpenRouter uses ~ prefixes for internal auto-routing aliases (e.g. ~anthropic).
These are not real providers — they already route through openrouter.toml.
The generated ~anthropic.toml was confusing (looked like a stale backup)
and redundant with the existing openrouter provider.

- Delete providers/~anthropic.toml
- Skip provider IDs starting with ~ in sync-pricing.py --create-missing

* fix(providers): remove morph, aider, kwaipilot

- morph: specialized code-editing/patching tool, not a general LLM provider
- aider: CLI meta-tool wrapper (base_url empty), redundant with claude-code/codex-cli/gemini-cli/qwen-code
- kwaipilot: Kwai internal coding assistant routed via OpenRouter, niche

* fix(sync): add morph/aider/kwaipilot to SKIP_PROVIDERS to prevent re-creation

* feat(sync): merge OpenRouter-only providers into openrouter.toml

Instead of generating standalone .toml files that just wrap the OpenRouter
endpoint, merge their models directly into openrouter.toml with the
standard 'openrouter/{provider}/{model}' ID convention.

- Add _build_model_fields() and _model_lines() helpers to deduplicate
  model rendering between standalone and merged paths
- Add merge_into_openrouter() that appends new models idempotently
- generate_provider_toml() now only runs for providers in PROVIDER_API
- --create-missing routes OpenRouter-only providers to merge_into_openrouter

* fix(providers): remove 14 OpenRouter-only standalone files

These providers have no direct public API and all route through
openrouter.ai/api/v1. Per the new sync-pricing.py policy, their models
will be merged into openrouter.toml on the next CI run instead of
living in separate files that just wrap the OpenRouter endpoint.

Removed: allenai, deepcogito, essentialai, inclusionai, inflection,
liquid, meituan, nex-agi, nousresearch, prime-intellect, relace,
switchpoint, tngtech, writer

* fix(providers): remove 7 niche providers with no driver support

No dedicated LLM driver code exists for these providers — they rely
purely on OpenAI-compatible passthrough with no special handling.
Removing them reduces registry noise; users can still reach them via
openrouter.toml if needed.

Removed: microsoft, ibm-granite, xiaomi, upstage, inception, aion-labs, arcee-ai

* fix(providers): remove ai21, chutes, venice

All three use ApiFormat::OpenAI with no special handling — pure passthrough.
No registry entry needed; users can reach them via openrouter.toml or by
adding a custom provider.

* docs(providers): rewrite README with full provider catalog and inclusion criteria

- List all 46 providers grouped by category with descriptions
- Document why each provider exists (direct API, unique endpoint, dedicated driver, local, CLI)
- Add inclusion criteria section explaining when to create standalone files vs merging into openrouter.toml
- Document sync script routing logic
- Update model counts: 49→46 providers, 339→232 models

* docs: add comprehensive READMEs for all registry sections + deepinfra provider

- agents/README.md: 32 agents across 7 categories with capability field reference
- channels/README.md: 44 channels across 5 categories with protocol reference table
- hands/README.md: 18 hands across 5 categories with HAND.toml format guide
- mcp/README.md: 33 MCP servers across 5 categories with transport/auth format
- plugins/README.md: 12 plugins with hook protocol documentation
- skills/README.md: 60 skills across 9 categories with SKILL.md format guide
- providers/deepinfra.toml: add DeepInfra serverless inference (5 models)
This commit is contained in:
Evan authored and GitHub committed 2026-04-24 00:02:33 +09:00
1 parent dbfb32d9d4
commit d43077afa9
38 files changed
+1146 -1215

No files matched your search

+150 -17
View File
@@ -1,16 +1,123 @@
# Providers
LLM provider and model metadata for LibreFang. Each provider file defines the provider's API configuration and all available models with pricing, context windows, and capability flags.
LLM provider and model metadata for LibreFang. Each `.toml` file defines one provider's API configuration and all its available models with pricing, context windows, and capability flags.
## Structure
**Current state: 46 providers, 232+ models**
```
providers/
├── anthropic.toml
├── openai.toml
├── groq.toml
└── ... (46 providers, 220+ models)
```
---
## Provider Categories
### Frontier / Major Cloud APIs
| ID | Display Name | Base URL | API Key Env | Models | Description |
|----|-------------|----------|-------------|--------|-------------|
| `anthropic` | Anthropic | `https://api.anthropic.com` | `ANTHROPIC_API_KEY` | 7 | Claude family (Haiku / Sonnet / Opus); native Anthropic wire protocol, not OpenAI-compatible |
| `openai` | OpenAI | `https://api.openai.com/v1` | `OPENAI_API_KEY` | 15 | GPT-4.x, o-series reasoning, image generation, TTS; also the fallback for codex-cli |
| `gemini` | Google Gemini | `https://generativelanguage.googleapis.com` | `GEMINI_API_KEY` | 6 | Gemini 2.x family; native Google GenerativeLanguage protocol |
| `xai` | xAI | `https://api.x.ai/v1` | `XAI_API_KEY` | 7 | Grok-3 family from Elon Musk's xAI |
| `mistral` | Mistral AI | `https://api.mistral.ai/v1` | `MISTRAL_API_KEY` | 3 | Mistral Large / Small / Codestral; European frontier models |
| `cohere` | Cohere | `https://api.cohere.com/v2` | `COHERE_API_KEY` | 4 | Command R+ family; strong RAG and tool-use models |
| `deepseek` | DeepSeek | `https://api.deepseek.com/v1` | `DEEPSEEK_API_KEY` | 2 | DeepSeek-V3 (chat) + R1 (reasoning); extremely cost-effective |
| `meta-llama` | Meta Llama | `https://api.llama.com/v1` | `LLAMA_API_KEY` | 4 | Official Meta Llama API — direct access to Llama 3.x |
| `perplexity` | Perplexity AI | `https://api.perplexity.ai` | `PERPLEXITY_API_KEY` | 4 | Sonar family with live web search built in |
### Fast Inference / Compute Clouds
| ID | Display Name | Base URL | API Key Env | Models | Description |
|----|-------------|----------|-------------|--------|-------------|
| `groq` | Groq | `https://api.groq.com/openai/v1` | `GROQ_API_KEY` | 3 | GroqChip hardware; ~10× faster than GPU inference for supported models |
| `cerebras` | Cerebras | `https://api.cerebras.ai/v1` | `CEREBRAS_API_KEY` | 4 | Wafer-scale chip inference; best-in-class throughput for Llama |
| `sambanova` | SambaNova | `https://api.sambanova.ai/v1` | `SAMBANOVA_API_KEY` | 3 | Reconfigurable Dataflow Unit (RDU) inference; fast Llama variants |
| `fireworks` | Fireworks AI | `https://api.fireworks.ai/inference/v1` | `FIREWORKS_API_KEY` | 5 | Serverless open-model hosting; fast cold-start |
| `together` | Together AI | `https://api.together.xyz/v1` | `TOGETHER_API_KEY` | 8 | Open-model hosting (Llama, Qwen, Mistral) + fine-tuning API |
| `nvidia-nim` | NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | `NVIDIA_API_KEY` | 26 | NVIDIA NIM microservices; largest model selection in registry |
| `replicate` | Replicate | `https://api.replicate.com/v1` | `REPLICATE_API_TOKEN` | 3 | Run any model as a serverless API; image + video + LLM |
| `huggingface` | Hugging Face | `https://api-inference.huggingface.co/v1` | `HF_API_KEY` | 3 | HF Serverless Inference API for hosted open models |
### Cloud Platform / Enterprise
| ID | Display Name | Base URL | API Key Env | Models | Description |
|----|-------------|----------|-------------|--------|-------------|
| `bedrock` | AWS Bedrock | `https://bedrock-runtime.us-east-1.amazonaws.com` | `AWS_ACCESS_KEY_ID` | 11 | AWS-managed models (Claude, Llama, Mistral, Nova); IAM auth |
| `vertex-ai` | Google Cloud Vertex AI | `https://us-central1-aiplatform.googleapis.com` | `GOOGLE_APPLICATION_CREDENTIALS` | 6 | GCP-hosted Gemini + third-party models; service account JSON auth |
| `github-copilot` | GitHub Copilot | `https://api.githubcopilot.com` | `GITHUB_TOKEN` | 1 | Uses `ApiFormat::Copilot` — proprietary protocol, not OpenAI-compatible; requires GitHub PAT with Copilot access |
### Aggregators / Routers
| ID | Display Name | Base URL | API Key Env | Models | Description |
|----|-------------|----------|-------------|--------|-------------|
| `openrouter` | OpenRouter | `https://openrouter.ai/api/v1` | `OPENROUTER_API_KEY` | 18+ | Meta-provider routing to 300+ models; also receives models from OpenRouter-only providers via sync script |
| `siliconflow` | SiliconFlow | `https://api.siliconflow.cn/v1` | `SILICONFLOW_API_KEY` | dynamic | 硅基流动 — Chinese open-model hosting; models discovered at runtime, not hardcoded in TOML |
### Chinese Providers
| ID | Display Name | Base URL | API Key Env | Models | Description |
|----|-------------|----------|-------------|--------|-------------|
| `qwen` | Qwen (Alibaba) | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `DASHSCOPE_API_KEY` | 9 | Qwen3 family by Alibaba; multi-region support (`intl` / `us`) via `[provider.regions]` |
| `moonshot` | Moonshot (Kimi) | `https://api.moonshot.ai/v1` | `MOONSHOT_API_KEY` | 5 | Kimi general chat models (moonshot-v1-8k/32k/128k) |
| `minimax` | MiniMax | `https://api.minimax.io/v1` | `MINIMAX_API_KEY` | 8 | MiniMax M-series; strong Chinese + multilingual models |
| `zhipu` | Zhipu AI (GLM) | `https://open.bigmodel.cn/api/paas/v4` | `ZHIPU_API_KEY` | 6 | GLM-4 family by Zhipu AI (智谱); general chat + vision |
| `zai` | Z.AI | `https://api.z.ai/api/paas/v4` | `ZHIPU_API_KEY` | 2 | Z.AI general models; shares API key with zhipu |
| `baichuan` | Baichuan (百川) | `https://api.baichuan-ai.com/v1` | `BAICHUAN_API_KEY` | 2 | Baichuan4 family; strong Chinese-language performance |
| `volcengine` | Volcano Engine (Doubao) | `https://ark.cn-beijing.volces.com/api/v3` | `VOLCENGINE_API_KEY` | 8 | ByteDance Doubao models; Ark platform |
| `stepfun` | Stepfun (阶跃星辰) | `https://api.stepfun.com/v1` | `STEPFUN_API_KEY` | 4 | Step-2 family; strong long-context and reasoning |
| `tencent` | Tencent | `https://api.hunyuan.cloud.tencent.com/v1` | `HUNYUAN_API_KEY` | 1 | Hunyuan models by Tencent |
| `qianfan` | Baidu Qianfan | `https://qianfan.baidubce.com/v2` | `QIANFAN_API_KEY` | 3 | ERNIE family by Baidu; Qianfan platform |
### Coding-Specific Endpoints
Separate `base_url` for coding workloads — not just model aliases. Same API key as the general counterpart.
| ID | Display Name | Base URL | API Key Env | Models | vs. General |
|----|-------------|----------|-------------|--------|-------------|
| `kimi_coding` | Kimi for Code | `https://api.kimi.com/coding` | `KIMI_API_KEY` | 1 | vs `moonshot`: `api.moonshot.ai/v1` |
| `alibaba-coding-plan` | Alibaba Coding Plan (Intl) | `https://coding-intl.dashscope.aliyuncs.com/v1` | `ALIBABA_CODING_PLAN_API_KEY` | 9 | vs `qwen`: `dashscope.aliyuncs.com`; aggregates models from multiple vendors (MiniMax, GLM, Kimi) |
| `volcengine_coding` | Volcano Engine Coding Plan | `https://ark.cn-beijing.volces.com/api/coding/v3` | `VOLCENGINE_API_KEY` | dynamic | vs `volcengine`: `/api/v3`; models discovered at runtime |
| `zhipu_coding` | Zhipu Coding (CodeGeeX) | `https://open.bigmodel.cn/api/coding/paas/v4` | `ZHIPU_API_KEY` | 1 | vs `zhipu`: `/api/paas/v4`; CodeGeeX-4 coding model |
| `zai_coding` | Z.AI Coding | `https://api.z.ai/api/coding/paas/v4` | `ZHIPU_API_KEY` | 2 | vs `zai`: `/api/paas/v4`; GLM coding variants |
### CLI-Based Providers (No API Key)
Route through a locally-installed CLI tool. `key_required = false`, `base_url` is empty. Cost is $0.
| ID | Display Name | CLI Binary | Models | ApiFormat | Description |
|----|-------------|-----------|--------|-----------|-------------|
| `claude-code` | Claude Code | `claude` | 3 | `ClaudeCode` | Anthropic's official CLI; routes through Claude API with OAuth |
| `codex-cli` | Codex CLI | `codex` | 6 | `CodexCli` | OpenAI Codex CLI; also serves as fallback for `openai` provider |
| `gemini-cli` | Gemini CLI | `gemini` | 2 | `GeminiCli` | Google Gemini CLI; also serves as fallback for `gemini` provider |
| `qwen-code` | Qwen Code | `qwen-code` | 3 | `QwenCode` | Alibaba Qwen coding CLI |
### Local / Self-Hosted
| ID | Display Name | Default Base URL | API Key Env | Notes |
|----|-------------|-----------------|-------------|-------|
| `ollama` | Ollama | `http://localhost:11434/v1` | `OLLAMA_API_KEY` | No key required; models discovered dynamically at runtime via `/api/tags` |
| `lmstudio` | LM Studio | `http://localhost:1234/v1` | `LMSTUDIO_API_KEY` | No key required; GUI app for running GGUF models locally |
| `vllm` | vLLM | `http://localhost:8000/v1` | `VLLM_API_KEY` | No key required; high-throughput inference server for production self-hosting |
### Special / Niche
| ID | Display Name | Base URL | API Key Env | Notes |
|----|-------------|----------|-------------|-------|
| `chatgpt` | ChatGPT (Session Auth) | `https://chatgpt.com/backend-api` | `CHATGPT_SESSION_TOKEN` | Session cookie auth, not an API key. Exposes GPT-5.x Codex models (gpt-5.1-codex etc.) that are unavailable via the standard OpenAI API |
| `elevenlabs` | ElevenLabs | `https://api.elevenlabs.io/v1` | `ELEVENLABS_API_KEY` | TTS / voice generation only — has a dedicated `elevenlabs.rs` driver in librefang-runtime. No chat models; appears in the provider list for media capability routing |
---
## Inclusion Criteria
A provider gets its own `.toml` file when it meets **at least one** of:
1. Has a **direct public API** not accessible via OpenRouter
2. Has a **unique endpoint** for a specific workload (e.g. coding plan endpoints)
3. Has a **dedicated driver** (`ApiFormat` beyond generic `OpenAI`)
4. Is a **local/self-hosted** runtime
5. Is a **CLI-based** provider
Providers that only route through `openrouter.ai/api/v1` with `OPENROUTER_API_KEY` are **not** given standalone files — their models are merged into `openrouter.toml` by the sync script. See [scripts/sync-pricing.py](../scripts/sync-pricing.py).
---
## Provider TOML Format
@@ -39,26 +146,52 @@ aliases = ["short-name"]
## Tier Definitions
| Tier | Description | Examples |
|------|-------------|----------|
|------|-------------|---------|
| `frontier` | Most capable, cutting-edge | Claude Opus, GPT-4.1 |
| `smart` | Smart, cost-effective | Claude Sonnet, Gemini 2.5 Flash |
| `balanced` | Balanced speed/cost | GPT-4.1 Mini, Llama 3.3 70B |
| `fast` | Fastest, cheapest | GPT-4o Mini, Claude Haiku |
| `local` | Local models, zero cost | Ollama, vLLM, LM Studio |
---
## Sync Script
`scripts/sync-pricing.py` runs daily via CI to keep model pricing current.
```bash
python scripts/sync-pricing.py # Update prices only
python scripts/sync-pricing.py --create-missing # Also add new providers
python scripts/sync-pricing.py --dry-run --create-missing # Preview changes
```
**`--create-missing` routing logic:**
| Condition | Action |
|-----------|--------|
| Provider in `PROVIDER_API` map (has direct API) | Create standalone `.toml` |
| Provider not in `PROVIDER_API` (OpenRouter-only) | Merge into `openrouter.toml` with `openrouter/{provider}/{model}` IDs |
| Provider in `SKIP_PROVIDERS` (morph, aider, kwaipilot, …) | Skip entirely |
| Provider ID starts with `~` (OpenRouter internal routing alias) | Skip entirely |
---
## Validation
```bash
python scripts/validate.py
python scripts/validate.py # Warn on issues
python scripts/validate.py --strict # Treat warnings as errors
```
Checks: required fields, valid tiers, non-negative costs, no duplicate model IDs.
## Adding or Updating a Model
## Adding or Updating a Provider
1. Edit or create the provider file in `providers/`
2. Use exact API model IDs and verify pricing from official sources
3. Run `python scripts/validate.py`
4. Submit a PR
1. Check inclusion criteria above — if OpenRouter-only, don't create a new file
2. Create or edit the `.toml` in `providers/`
3. Use exact API model IDs; verify pricing from official sources
4. Run `python scripts/validate.py`
5. Update the table in this README
6. Submit a PR
See [CONTRIBUTING.md](../CONTRIBUTING.md) for the full guide and pricing source links.
See [CONTRIBUTING.md](../CONTRIBUTING.md) for the full guide.
-48
View File
@@ -1,48 +0,0 @@
# AI21 Labs — https://ai21.com
# Models: 3
[provider]
id = "ai21"
display_name = "AI21 Labs"
api_key_env = "AI21_API_KEY"
base_url = "https://api.ai21.com/studio/v1"
key_required = true
[[models]]
id = "jamba-1.5-large"
display_name = "Jamba 1.5 Large"
tier = "smart"
context_window = 256000
max_output_tokens = 4096
input_cost_per_m = 2.0
output_cost_per_m = 8.0
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["jamba"]
[[models]]
id = "jamba-1.5-mini"
display_name = "Jamba 1.5 Mini"
tier = "fast"
context_window = 256000
max_output_tokens = 4096
input_cost_per_m = 0.20
output_cost_per_m = 0.40
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "jamba-instruct"
display_name = "Jamba Instruct"
tier = "balanced"
context_window = 256000
max_output_tokens = 4096
input_cost_per_m = 0.50
output_cost_per_m = 0.70
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
-35
View File
@@ -1,35 +0,0 @@
[provider]
id = "aider"
display_name = "Aider"
api_key_env = ""
base_url = ""
key_required = false
[[models]]
id = "aider/sonnet"
display_name = "Claude Sonnet via Aider"
provider = "aider"
tier = "smart"
context_window = 200000
max_output_tokens = 64000
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = false
supports_vision = false
supports_streaming = false
supports_thinking = true
aliases = ["aider-sonnet"]
[[models]]
id = "aider/gpt-4o"
display_name = "GPT-4o via Aider"
provider = "aider"
tier = "smart"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 0.0
output_cost_per_m = 0.0
supports_tools = false
supports_vision = false
supports_streaming = false
aliases = ["aider-gpt-4o"]
-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
-50
View File
@@ -1,50 +0,0 @@
# allenai — auto-generated from OpenRouter API
[provider]
id = "allenai"
display_name = "Allenai"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "olmo-2-0325-32b-instruct"
display_name = "AllenAI: Olmo 2 32B Instruct"
tier = "fast"
context_window = 128000
max_output_tokens = 16384
input_cost_per_m = 0.05
output_cost_per_m = 0.2
supports_streaming = true
[[models]]
id = "olmo-3-32b-think"
display_name = "AllenAI: Olmo 3 32B Think"
tier = "fast"
context_window = 65536
max_output_tokens = 65536
input_cost_per_m = 0.15
output_cost_per_m = 0.5
supports_streaming = true
supports_thinking = true
[[models]]
id = "olmo-3.1-32b-instruct"
display_name = "AllenAI: Olmo 3.1 32B Instruct"
tier = "fast"
context_window = 65536
max_output_tokens = 16384
input_cost_per_m = 0.2
output_cost_per_m = 0.6
supports_streaming = true
[[models]]
id = "olmo-3.1-32b-think"
display_name = "AllenAI: Olmo 3.1 32B Think"
tier = "fast"
context_window = 65536
max_output_tokens = 65536
input_cost_per_m = 0.15
output_cost_per_m = 0.5
supports_streaming = true
supports_thinking = true
-78
View File
@@ -1,78 +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
[[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-large-thinking"
display_name = "Arcee AI: Trinity Large Thinking"
tier = "fast"
context_window = 262144
max_output_tokens = 262144
input_cost_per_m = 0.22
output_cost_per_m = 0.85
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 = "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
-76
View File
@@ -1,76 +0,0 @@
# Chutes.ai — https://chutes.ai
# Models: 5
[provider]
id = "chutes"
display_name = "Chutes.ai"
api_key_env = "CHUTES_API_KEY"
base_url = "https://llm.chutes.ai/v1"
key_required = true
[[models]]
id = "chutes/deepseek-ai/DeepSeek-V3"
display_name = "DeepSeek V3 (Chutes)"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.25
output_cost_per_m = 0.35
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["chutes-deepseek-v3"]
[[models]]
id = "chutes/deepseek-ai/DeepSeek-R1"
display_name = "DeepSeek R1 (Chutes)"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.55
output_cost_per_m = 2.19
supports_tools = false
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = ["chutes-deepseek-r1"]
[[models]]
id = "chutes/meta-llama/Llama-4-Maverick-17B-128E-Instruct"
display_name = "Llama 4 Maverick (Chutes)"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.20
output_cost_per_m = 0.30
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["chutes-llama-maverick"]
[[models]]
id = "chutes/Qwen/Qwen3-235B-A22B"
display_name = "Qwen3 235B (Chutes)"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.25
output_cost_per_m = 0.35
supports_tools = true
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = ["chutes-qwen3"]
[[models]]
id = "chutes/meta-llama/Llama-3.3-70B-Instruct"
display_name = "Llama 3.3 70B (Chutes)"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.10
output_cost_per_m = 0.15
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["chutes-llama-70b"]
-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
+69
View File
@@ -0,0 +1,69 @@
# DeepInfra — https://deepinfra.com
# Serverless open-model inference (Llama, Mistral, Qwen, etc.)
[provider]
id = "deepinfra"
display_name = "DeepInfra"
api_key_env = "DEEPINFRA_API_KEY"
base_url = "https://api.deepinfra.com/v1/openai"
key_required = true
[[models]]
id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
display_name = "Llama 3.1 8B Instruct"
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
[[models]]
id = "meta-llama/Meta-Llama-3.1-70B-Instruct"
display_name = "Llama 3.1 70B Instruct"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.35
output_cost_per_m = 0.4
supports_tools = true
supports_vision = false
supports_streaming = true
[[models]]
id = "meta-llama/Meta-Llama-3.1-405B-Instruct"
display_name = "Llama 3.1 405B Instruct"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.8
output_cost_per_m = 0.8
supports_tools = true
supports_vision = false
supports_streaming = true
[[models]]
id = "mistralai/Mistral-7B-Instruct-v0.3"
display_name = "Mistral 7B Instruct v0.3"
tier = "fast"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.07
output_cost_per_m = 0.07
supports_tools = true
supports_vision = false
supports_streaming = true
[[models]]
id = "Qwen/Qwen2.5-72B-Instruct"
display_name = "Qwen 2.5 72B Instruct"
tier = "balanced"
context_window = 32768
max_output_tokens = 8192
input_cost_per_m = 0.35
output_cost_per_m = 0.4
supports_tools = true
supports_vision = false
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
-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
-18
View File
@@ -1,18 +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-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
-18
View File
@@ -1,18 +0,0 @@
# inclusionai — auto-generated from OpenRouter API
[provider]
id = "inclusionai"
display_name = "Inclusionai"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "ling-2.6-flash:free"
display_name = "inclusionAI: Ling-2.6-flash (free)"
tier = "fast"
context_window = 262144
max_output_tokens = 32768
input_cost_per_m = 0.0
output_cost_per_m = 0.0
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-v2"
display_name = "Kwaipilot: KAT-Coder-Pro V2"
tier = "fast"
context_window = 256000
max_output_tokens = 80000
input_cost_per_m = 0.3
output_cost_per_m = 1.2
supports_streaming = true
-38
View File
@@ -1,38 +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.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
-18
View File
@@ -1,18 +0,0 @@
# meituan — auto-generated from OpenRouter API
[provider]
id = "meituan"
display_name = "Meituan"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "longcat-flash-chat"
display_name = "Meituan: LongCat Flash Chat"
tier = "fast"
context_window = 131072
max_output_tokens = 131072
input_cost_per_m = 0.2
output_cost_per_m = 0.8
supports_streaming = true
-28
View File
@@ -1,28 +0,0 @@
# microsoft — auto-generated from OpenRouter API
[provider]
id = "microsoft"
display_name = "Microsoft"
api_key_env = "GITHUB_TOKEN"
base_url = "https://models.inference.ai.azure.com"
key_required = true
[[models]]
id = "phi-4"
display_name = "Microsoft: Phi 4"
tier = "fast"
context_window = 16384
max_output_tokens = 16384
input_cost_per_m = 0.065
output_cost_per_m = 0.14
supports_streaming = true
[[models]]
id = "wizardlm-2-8x22b"
display_name = "WizardLM-2 8x22B"
tier = "smart"
context_window = 65535
max_output_tokens = 8000
input_cost_per_m = 0.62
output_cost_per_m = 0.62
supports_streaming = true
-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
-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
-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
-18
View File
@@ -1,18 +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
-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
-49
View File
@@ -1,49 +0,0 @@
# Venice.ai — https://venice.ai
# Models: 3
[provider]
id = "venice"
display_name = "Venice.ai"
api_key_env = "VENICE_API_KEY"
base_url = "https://api.venice.ai/api/v1"
key_required = true
[[models]]
id = "venice-uncensored"
display_name = "Venice Uncensored"
tier = "fast"
context_window = 32000
max_output_tokens = 8192
input_cost_per_m = 0.20
output_cost_per_m = 0.90
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = ["venice"]
[[models]]
id = "llama-3.3-70b"
display_name = "Llama 3.3 70B (Venice)"
tier = "balanced"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.1
output_cost_per_m = 0.32
supports_tools = true
supports_vision = false
supports_streaming = true
aliases = []
[[models]]
id = "qwen3-235b-a22b-instruct-2507"
display_name = "Qwen3 235B A22B (Venice)"
tier = "smart"
context_window = 128000
max_output_tokens = 8192
input_cost_per_m = 0.20
output_cost_per_m = 0.90
supports_tools = true
supports_vision = false
supports_streaming = true
supports_thinking = true
aliases = []
-18
View File
@@ -1,18 +0,0 @@
# writer — auto-generated from OpenRouter API
[provider]
id = "writer"
display_name = "Writer"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "palmyra-x5"
display_name = "Writer: Palmyra X5"
tier = "smart"
context_window = 1040000
max_output_tokens = 8192
input_cost_per_m = 0.6
output_cost_per_m = 6.0
supports_streaming = true
-38
View File
@@ -1,38 +0,0 @@
# xiaomi — auto-generated from OpenRouter API
[provider]
id = "xiaomi"
display_name = "Xiaomi"
api_key_env = "XIAOMI_ACCESS_KEY_ID"
base_url = "https://cnbj3-cloud-ml.api.xiaomi.net"
key_required = true
[[models]]
id = "mimo-v2-flash"
display_name = "Xiaomi: MiMo-V2-Flash"
tier = "fast"
context_window = 262144
max_output_tokens = 65536
input_cost_per_m = 0.09
output_cost_per_m = 0.29
supports_streaming = true
[[models]]
id = "mimo-v2-omni"
display_name = "Xiaomi: MiMo-V2-Omni"
tier = "fast"
context_window = 262144
max_output_tokens = 65536
input_cost_per_m = 0.4
output_cost_per_m = 2.0
supports_streaming = true
[[models]]
id = "mimo-v2-pro"
display_name = "Xiaomi: MiMo-V2-Pro"
tier = "smart"
context_window = 1048576
max_output_tokens = 131072
input_cost_per_m = 1.0
output_cost_per_m = 3.0
supports_streaming = true
-18
View File
@@ -1,18 +0,0 @@
# ~anthropic — auto-generated from OpenRouter API
[provider]
id = "~anthropic"
display_name = "~Anthropic"
api_key_env = "OPENROUTER_API_KEY"
base_url = "https://openrouter.ai/api/v1"
key_required = true
[[models]]
id = "claude-opus-latest"
display_name = "Anthropic: Claude Opus Latest"
tier = "frontier"
context_window = 1000000
max_output_tokens = 128000
input_cost_per_m = 5.0
output_cost_per_m = 25.0
supports_streaming = true