* chore: prune deprecated models across providers Remove old-generation models that are strictly superseded by current versions on the same provider/family. Affected providers: anthropic, bedrock, vertex-ai, xai, moonshot, zhipu, baichuan, stepfun, volcengine, minimax, cohere, together, fireworks, deepinfra, openrouter. Also clean up orphan aliases (grok3, grok-mini, minimax-m2.1) and remap moonshot alias to kimi-k2.5. Net: -42 model entries across 18 files. Provider model counts and README rows updated accordingly. * chore: remove redundant and orphan aliases from aliases.toml Provider TOML files auto-register their model.aliases at load time, so re-declaring them globally is duplication. Also drop entries pointing to models that no longer exist after the prune. - 45 redundant entries duplicating provider-defined aliases - 11 orphan targets (gpt-4o, gpt-4o-mini, grok-2-mini, grok-3, mixtral-8x7b-32768, copilot/gpt-4, open-mistral-nemo, pixtral-large-latest, jamba-1.5-large, palmyra-x5, venice-uncensored) Net: 100 lines down to 21. The file is now what the header comment always claimed it was: 'additional global aliases not tied to a specific model entry.' * chore: second pass — prune more deprecated models Apply the same 'strictly superseded by same-provider/family successor' rule to providers missed in the first pass: - openai: gpt-4.1 / -mini / -nano, o3, o4-mini (5) - meta-llama: llama-3.3-70b-instruct (1) - zhipu: glm-4v-plus (1) - together: Llama-3.3-70B-Instruct-Turbo (1) - xiaomi: mimo-v2-flash / -omni / -pro (3) - aion-labs: aion-1.0 / -mini (2) - qianfan: ernie-speed-128k, ernie-4.0-turbo-8k (2) - cerebras: cerebras/llama3.1-8b (1) - qwen-code: qwen-code/qwq-32b (1) - nvidia-nim: 12 models (llama-3.1/3.2 series, mixtral-8x22b, mistral-small-3.1, phi-4-mini, qwq-32b, r1-distill-32b, qwen2.5-coder, nemotron-mini-4b, nemotron-70b-instruct) - openrouter: meta-llama/llama-3.3-70b (paid), rekaai/reka-edge (2) - alibaba-coding-plan: qwen3.5-plus, qwen3-max-2026-01-23, MiniMax-M2.5, kimi-k2.5 (4) Net: -35 model entries. providers/README.md model counts updated. 220 models remain.
198 lines
12 KiB
Markdown
198 lines
12 KiB
Markdown
# Providers
|
||
|
||
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.
|
||
|
||
**Current state: 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` | 10 | GPT-5.x family + image generation; codex-cli fallback |
|
||
| `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` | 3 | Official Meta Llama API — Llama 4 Maverick / Scout + Guard 4 |
|
||
| `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` | 3 | 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` | 3 | Serverless open-model hosting; fast cold-start |
|
||
| `together` | Together AI | `https://api.together.xyz/v1` | `TOGETHER_API_KEY` | 4 | Open-model hosting (Llama 4, DeepSeek) + fine-tuning API |
|
||
| `nvidia-nim` | NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | `NVIDIA_API_KEY` | 14 | NVIDIA NIM microservices; broad open-model selection |
|
||
| `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` | 8 | AWS-managed models (Claude, Llama, Mistral, Nova); IAM auth |
|
||
| `vertex-ai` | Google Cloud Vertex AI | `https://us-central1-aiplatform.googleapis.com` | `GOOGLE_APPLICATION_CREDENTIALS` | 4 | 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` | 38+ | 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` | 2 | Kimi K2 / K2.5 |
|
||
| `minimax` | MiniMax | `https://api.minimax.io/v1` | `MINIMAX_API_KEY` | 4 | MiniMax M-series; strong Chinese + multilingual models |
|
||
| `zhipu` | Zhipu AI (GLM) | `https://open.bigmodel.cn/api/paas/v4` | `ZHIPU_API_KEY` | 2 | GLM-4.7 / GLM-5 by Zhipu AI (智谱) |
|
||
| `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` | 1 | Baichuan4; strong Chinese-language performance |
|
||
| `volcengine` | Volcano Engine (Doubao) | `https://ark.cn-beijing.volces.com/api/v3` | `VOLCENGINE_API_KEY` | 5 | ByteDance Doubao 2.0 + UI-TARS; Ark platform |
|
||
| `stepfun` | Stepfun (阶跃星辰) | `https://api.stepfun.com/v1` | `STEPFUN_API_KEY` | 2 | Step-3 / Step-3.5 Flash; long-context 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` | 1 | ERNIE 4.5 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` | 5 | vs `qwen`: `dashscope.aliyuncs.com`; aggregates Qwen + GLM under one plan |
|
||
| `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` | 2 | `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
|
||
|
||
```toml
|
||
[provider]
|
||
id = "provider-id" # Unique identifier (lowercase, hyphenated)
|
||
display_name = "Provider Name"
|
||
api_key_env = "PROVIDER_API_KEY" # Env var for API key
|
||
base_url = "https://api.example.com"
|
||
key_required = true
|
||
|
||
[[models]]
|
||
id = "model-id" # Exact API model ID
|
||
display_name = "Model Name"
|
||
tier = "smart" # frontier | smart | balanced | fast | local
|
||
context_window = 128000
|
||
max_output_tokens = 16384
|
||
input_cost_per_m = 2.50 # USD per million input tokens
|
||
output_cost_per_m = 10.0 # USD per million output tokens
|
||
supports_tools = true
|
||
supports_vision = false
|
||
supports_streaming = true
|
||
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 # 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 Provider
|
||
|
||
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.
|