# Providers

Provider implementations live in **[`go-llm-router`](https://github.com/pardnchiu/go-llm-router)** (v0.10.1), an external module extracted from Agenvoy. Agenvoy builds every agent through `router.New(cfg)` and calls one `Agent.Send()` surface — no per-vendor code remains in this repository.

## Supported list

Eleven model vendors, plus TypeSafe, which since v1.3.1 serves only the [decision model](/docs/providers-typesafe). Since v1.0.22 the TUI `/model add` picker has three tabs (←/→ switches), and each auth route is its own row: **OAuth** — Claude Code (`claude-code`, since v1.1.0), OpenAI Codex (`codex`), Grok (xAI) (`grok-oauth`), GitHub Copilot (`copilot`); **API Key** — OpenAI, Claude, Grok, Gemini, DeepSeek, Mistral, OpenRouter, Ollama Cloud, NVIDIA NIM, TypeSafe (key only: saving it skips the model list, and its model is picked in `/model decision`); **Custom** — Cloudflare, Local/Custom (`compat`), plus any local Ollama / llama.cpp endpoint detected on its usual port. That is sixteen fixed rows (fifteen before v1.3.1, fourteen in v1.0.22). Before v1.0.22 it was one twelve-row list, where picking OpenAI or Grok opened a second *method* picker for API key vs. subscription. `o` on a row opens that provider's console (API-key page, or the plan page for subscriptions). `GET /v1/providers` flattens the same set into fifteen entries, giving `claude-code`, `codex` and `grok-oauth` their own IDs so an API client can address one auth route directly; `compat` is returned alongside them as a sixteenth row. Each row carries `logged_in`, which is meaningful only for the four subscription routes (`claude-code`, `codex`, `grok-oauth`, `copilot`), `console`, the console pages `GET /v1/provider/:provider/console` can redirect to, `hidden`, set on `claude-code` while it is not enabled, and (since v1.3.1) `decision`, true only for `typesafe`.

| Provider | ID | Auth | Notes |
|---|---|---|---|
| OpenAI | `openai` · `codex` | API key **or** OAuth | API key uses Chat Completions / Responses. The OAuth route runs on your ChatGPT / Codex subscription with no API key, over SSE |
| Anthropic Claude | `claude` · `claude-code` | API key **or** OAuth (Claude Code) | API key uses the Messages API, parallel tool use on by default. `claude-code` runs on your Claude subscription through the local `claude` CLI — see [Claude Code](#claude-code) |
| Google Gemini | `gemini` | API key | gemini-2.x / 3.x families |
| xAI Grok | `grok` · `grok-oauth` | API key **or** OAuth | API key is pay-per-token; the OAuth route runs on your xAI subscription |
| GitHub Copilot | `copilot` | OAuth | Device-code login flow, on your GitHub subscription. Since v1.0.25 its context window comes from the Copilot models API (`max_context_window_tokens`, cached 24 hours), not the general 128K default |
| DeepSeek | `deepseek` | API key | Flash and Pro models (e.g. `deepseek-v4-pro`), listed live from `api.deepseek.com/v1/models`; `deepseek-chat` / `deepseek-reasoner` are gone |
| Mistral | `mistral` | API key | Mistral's own hosted models |
| NVIDIA NIM | `nvidia` | API key | Nemotron, Llama, Mistral, and other hosted open-weight models; free tier needs no billing setup |
| Ollama Cloud | `ollama-cloud` | API key | Ollama's hosted models; since 2026-11-09 the Free plan is pay-as-you-go and hosted models need credits. Quota display was removed; check usage on ollama.com (Removed in v1.2.0) |
| OpenRouter | `openrouter` | API key | Aggregator — routes to models from many vendors through one key |
| Cloudflare | `cloudflare` | API token + account ID | Workers AI; optional gateway ID |
| TypeSafe | `typesafe` | API key | Since v1.3.1. Decision model only — no chat models; stored as `TYPESAFE_API_KEY` |
