Reference
Supported vendors
The vendors clai speaks to, the API key each one reads, and the model files they share.
On this page
Every vendor lives in internal/vendors/<vendor>/ and implements the same streaming and tool-calling interfaces. A model file names its vendor, so one profile switches vendor when its model field changes.
Vendor matrix
| Vendor | API key | Endpoint |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY |
api.anthropic.com |
| OpenAI | OPENAI_API_KEY |
api.openai.com |
GEMINI_API_KEY |
generativelanguage.googleapis.com |
|
| Mistral | MISTRAL_API_KEY |
api.mistral.ai |
| DeepSeek | DEEPSEEK_API_KEY |
api.deepseek.com |
| xAI | XAI_API_KEY |
api.x.ai |
| OpenRouter | OPENROUTER_API_KEY |
openrouter.ai |
| Berget | BERGET_API_KEY |
api.berget.ai |
| HuggingFace | HF_API_KEY |
the endpoint in the model file |
| Inception | INCEPTION_API_KEY |
api.inceptionlabs.ai |
| Novita | NOVITA_API_KEY |
api.novita.ai |
| Jev | TYPESAFE_API_KEY |
api.typesafe.ai |
| Ollama | OLLAMA_API_KEY (optional) |
localhost:11434, or the endpoint you set |
A vendor reads its key from the environment, never from a configuration file. A local Ollama daemon needs no key; the variable exists so an Ollama-compatible endpoint behind an auth proxy works.
Model files
clai setup writes one <vendor>_<model>.json file per vendor and model under the config directory. The file holds the model name and the vendor’s request parameters: temperature, max tokens, top-p, and any endpoint override. The model field of textConfig.json or of a profile selects one.
See Configuration for the file layout and Profiles and setup for the override cascade.