Catalog Reference
Ante resolves every provider and model from a catalog: the built-in presets documented here, with your ~/.ante/catalog.json merged on top at startup. The catalog is read once per process — restart Ante to pick up edits.
This page is the exhaustive reference. For how to pick a provider day to day and copy-paste customization recipes, see Providers.
Built-in providers
| Provider | key | Wire style | Authentication |
|---|---|---|---|
| Anthropic | anthropic | AnthropicMessage | ANTHROPIC_API_KEY |
| Anthropic Subscription | anthropic-subscription | AnthropicMessage | OAuth |
| OpenAI | openai | OpenAiResponse | OPENAI_API_KEY |
| OpenAI Compatible | openai-compatible | OpenAiCompatible | OPENAI_COMPATIBLE_API_KEY |
| OpenAI Subscription | openai-subscription | OpenAiResponse | OAuth (Codex) |
| Gemini | gemini | Gemini | GEMINI_API_KEY |
| Vertex AI Gemini | vertex-gemini | Gemini | VERTEX_GEMINI_API_KEY |
| Open Router | openrouter | OpenAiCompatible | OPENROUTER_API_KEY |
| Open Router Responses | openrouter-responses | OpenAiResponse | OPENROUTER_API_KEY |
| Open Router Anthropic | openrouter-anthropic | AnthropicMessage | OPENROUTER_API_KEY |
| Grok (xAI) | xai | OpenAiResponse | XAI_API_KEY |
| Zai | zai | OpenAiCompatible | ZAI_API_KEY |
| DeepSeek | deepseek | OpenAiCompatible | DEEPSEEK_API_KEY |
| Ali Coding Plan | ali-coding-plan | AnthropicMessage | ALI_CODING_PLAN_API_KEY |
| Antix | antix | AnthropicMessage | OAuth |
| Antix (API key) | antix-api-key | AnthropicMessage | ANTIX_API_KEY |
| Local | local | OpenAiCompatible | none |
The key column is what you pass to --provider. Providers authenticating via OAuth (anthropic-subscription, openai-subscription, antix) sign in interactively through the TUI; the rest read an API key from the listed environment variable.
Models by provider
Each provider ships a set of preferred_models — the ids that appear in the model picker. When you select a provider without naming a model, Ante defaults to its heaviest-weight model (see Weight classes), not simply the first in the list. Explicit provider choices are authoritative: if you pass --provider, Ante sends the model id you supplied to that provider even when it is not listed in preferred_models (see Resolution).
Anthropic
anthropic and anthropic-subscription serve the same models:
| Model | Description | Context |
|---|---|---|
claude-haiku-4-5 | Fastest model with near-frontier intelligence | 200K |
claude-sonnet-5 | Best combination of speed and intelligence | 1M |
claude-opus-5 | Complex agentic coding and enterprise work | 1M |
claude-fable-5-1 | Highest capability for demanding reasoning | 1M |
ante --provider anthropic --model claude-sonnet-5
OpenAI
| Model | Description | Context |
|---|---|---|
gpt-5.6-sol | GPT-5.6 flagship for complex reasoning and coding | 1.05M |
gpt-5.6-terra | GPT-5.6 balance of intelligence and cost | 1.05M |
gpt-5.6-luna | GPT-5.6 model for efficient, high-volume workloads | 1.05M |
gpt-5.5-pro | Highest reliability on complex problems | 400K |
gpt-5.4-pro | Highest reliability in the GPT-5.4 family | 400K |
gpt-5.3-codex | Frontier coding model | 400K |
gpt-5.4-mini | Faster, cheaper GPT-5.4 model | 400K |
gpt-5.4-nano | Smallest GPT-5.4 model | 400K |
ante --provider openai --model gpt-5.6-sol
The openai-subscription provider (ChatGPT/Codex OAuth) serves gpt-5.6-sol, gpt-5.6-terra, and gpt-5.6-luna with 272K context, plus gpt-5.5, gpt-5.4, and gpt-5.4-mini with 400K context.
OpenAI transports
The openai and openai-subscription providers can stream responses two ways:
| Transport | Endpoint | Default |
|---|---|---|
http_sse (HTTP + SSE) | https://api.openai.com/v1/responses (or the subscription equivalent) | ✅ |
websocket_auto (persistent WebSocket) | wss://.../v1/responses | opt-in |
WebSocket mode keeps one connection open per session and continues each turn with previous_response_id plus only the new input items. In long agentic tool loops this eliminates per-turn round-trip latency. See OpenAI's WebSocket mode guide for the underlying protocol.
Opt in via the process-scoped env var (default is http_sse):
ANTE_OPENAI_TRANSPORT=websocket_auto ante --provider openai --model gpt-5.4-mini
Accepted values: http_sse, websocket_auto. Unknown values warn and fall back to http_sse.
Notes:
-
WS only engages on streaming turns (TUI sessions). Headless
--promptmode uses non-streamingchat()and bypasses WS by design. -
Any transient WS failure (connect timeout, network blip) falls back to HTTP/SSE for that turn — users never see hard errors caused by the transport choice. Auth failures (
401/403) flip the entire session to HTTP/SSE for the rest of its lifetime. -
Works against both
api.openai.com(API-key) and the ChatGPT subscription backend atchatgpt.com/backend-api/codex. -
To verify which transport is active: in debug builds, toggle the debug panel (
Ctrl+L) and check the Info tab for theOpenAI Transport:line. Otherwise grep your session log fortransport selected:grep "transport selected" ~/.ante/logs/*/ante.*.log
Gemini
gemini and vertex-gemini serve the same models:
| Model | Description | Context |
|---|---|---|
gemini-3.8-flash | Gemini 3.8 Flash for long-horizon coding and autonomous agents | 1.05M |
gemini-3.7-flash | Gemini 3.7 Flash for fast agentic and multimodal workflows | 1.05M |
gemini-3.6-flash | Gemini 3.6 Flash for agentic and multimodal workflows | 1M |
gemini-3.1-pro-preview | Gemini 3.1 Pro with deep thinking | 1M |
gemini-3.1-pro-preview-customtools | Gemini 3.1 Pro optimized for custom tool usage | 1M |
gemini-3.5-flash-lite | Fastest, lowest-cost Gemini 3.5 model for high-throughput work | 1M |
ante --provider gemini --model gemini-3.1-pro-preview
Grok (xAI)
| Model | Description | Context |
|---|---|---|
grok-4.6 | Grok 4.6 flagship reasoning model | 500K |
ante --provider xai --model grok-4.6
Zai
| Model | Description | Context |
|---|---|---|
glm-5.3 | Latest GLM-5.3 model for coding and agentic tasks | 1M |
glm-5.3-flash | Fast, cost-efficient GLM-5.3 multimodal model | 1M |
ante --provider zai --model glm-5.3
Open Router
Open Router ships as three providers sharing one API key, split by wire style: openrouter (OpenAI-compatible chat), openrouter-responses (OpenAI Responses), and openrouter-anthropic (Anthropic Messages).
openrouter:
| Model | Description | Context |
|---|---|---|
deepseek/deepseek-v4-flash-0731 | DeepSeek V4 Flash 0731 | 1.05M |
google/gemini-3.8-flash | Gemini 3.8 Flash for long-horizon coding and autonomous agents | 1.05M |
google/gemini-3.7-flash | Gemini 3.7 Flash for fast multimodal agentic workflows | 1.05M |
x-ai/grok-4.6 | Grok 4.6 flagship reasoning model via OpenRouter | 500K |
qwen/qwen3.8-max | Qwen 3.8 flagship multimodal reasoning model | 1M |
qwen/qwen3.7-plus | Cost-effective Qwen 3.7 model with vision | 1M |
qwen/qwen3.7-flash | Low-cost Qwen 3.7 multimodal reasoning model | 1M |
meta/muse-spark-1.3 | Muse Spark 1.3 multimodal agentic reasoning model | 1.05M |
tencent/hy3 | Tencent Hy3 agentic reasoning model | 262K |
xiaomi/mimo-v2.5-pro | MiMo-V2.5-Pro flagship agentic model | 1.05M |
xiaomi/mimo-v2.5 | MiMo-V2.5 omnimodal model with vision | 1.05M |
z-ai/glm-5.3 | GLM 5.3 coding and agentic reasoning model via OpenRouter | 1.05M |
z-ai/glm-5.3-flash | Fast, cost-efficient GLM 5.3 multimodal model via OpenRouter | 1.05M |
moonshotai/kimi-k3 | Kimi K3 flagship multimodal reasoning model | 1.05M |
moonshotai/kimi-k2.7-code | Kimi K2.7 Code reasoning model with vision | 262K |
minimax/minimax-m3 | MiniMax M3 multimodal model | 512K |
deepseek/deepseek-v4-pro-0813 | DeepSeek V4 Pro 0813 GA | 1.05M |
openrouter-responses serves openai/gpt-5.6-sol, openai/gpt-5.6-sol-pro, openai/gpt-5.6-terra, openai/gpt-5.6-terra-pro, openai/gpt-5.6-luna, and openai/gpt-5.6-luna-pro (1.05M context), plus openai/gpt-5.3-codex (400K). The -pro ids select OpenRouter's pro reasoning route.
openrouter-anthropic serves the Claude family over Anthropic Messages: anthropic/claude-haiku-4.5 (200K context), plus anthropic/claude-sonnet-5, anthropic/claude-opus-5, anthropic/claude-opus-5-fast, and anthropic/claude-fable-5.1 (1M).
Each provider also accepts any model from Open Router's full model list by id, as long as it speaks that provider's wire style.
ante --provider openrouter --model deepseek/deepseek-v4-pro-0813
ante --provider openrouter-responses --model openai/gpt-5.6-sol
ante --provider openrouter-anthropic --model anthropic/claude-fable-5.1
DeepSeek
| Model | Description | Context |
|---|---|---|
deepseek-v4-flash | DeepSeek V4 Flash | 1M |
deepseek-v4-pro | DeepSeek V4 Pro | 1M |
ante --provider deepseek --model deepseek-v4-flash
Set DEEPSEEK_API_KEY, and optionally DEEPSEEK_BASE_URL.
Ali Coding Plan
| Model | Description | Context |
|---|---|---|
qwen3.5-plus | Qwen 3.5 Plus with vision | 1M |
qwen3.6-plus | Latest Qwen 3.6 Plus with vision | 1M |
glm-5.1 | GLM-5.1 model | 200K |
MiniMax-M2.5 | MiniMax M2.5 model | 205K |
qwen3-max-2026-01-23 | Qwen 3 Max snapshot | 1M |
qwen3-coder-next | Qwen 3 Coder Next coding model | 1M |
qwen3-coder-plus | Qwen 3 Coder Plus coding model | 1M |
qwen-plus | Fast and capable | 1M |
ante --provider ali-coding-plan --model qwen3.5-plus
Requires a Coding Plan subscription and API key (format: sk-sp-xxxxx). The built-in provider speaks the Anthropic wire endpoint. Some models are only available on the OpenAI-compatible endpoint — add a custom catalog entry to reach it:
{
"providers": {
"ali-coding-plan-oai": {
"display_name": "Ali Coding Plan (OpenAI)",
"base_url": "https://coding.dashscope.aliyuncs.com/v1",
"auth": { "bearer": { "env_key": "ALI_CODING_PLAN_API_KEY" } },
"wire_style": "OpenAiCompatible",
"http_headers": {
"User-Agent": "ante-cli/1.0.0",
"X-DashScope-UserAgent": "coding-agent"
}
}
}
}
Antix
antix (OAuth) and antix-api-key (API key) serve the same models through Antigma:
| Model | Description | Context |
|---|---|---|
gemini-3.7-flash | Gemini 3.7 Flash for fast agentic and multimodal workflows | 1M |
grok-4.5 | Grok 4.5, xAI flagship for code and agentic work | 500K |
grok-4.6 | Grok 4.6 flagship reasoning model | 500K |
kimi-k3 | Kimi K3 flagship reasoning model with vision | 1M |
qwen3.7-max | Latest Qwen 3.7 Max | 1M |
qwen3.7-plus | Latest Qwen 3.7 Plus | 1M |
gemini-3.1-pro-preview | Gemini 3.1 Pro with deep thinking | 1M |
claude-haiku-4-5 | Fast and capable | 200K |
claude-sonnet-5 | Best combination of speed and intelligence | 1M |
claude-opus-5 | Complex agentic coding and enterprise work | 1M |
claude-fable-5-1 | Most capable Claude model | 1M |
gpt-5.3-codex | Coding-optimized Codex model | — |
gpt-5.4-mini | Faster, cheaper GPT-5.4 model | 400K |
gpt-5.4-nano | Smallest GPT-5.4 model | 400K |
deepseek-v4-flash | Fast DeepSeek V4 Flash | 1M |
deepseek-v4-pro | DeepSeek V4 Pro with deep thinking | 1M |
glm-5.3 | Latest GLM-5.3 model for coding and agentic tasks | 1M |
glm-5.3-flash | Fast GLM-5.3 Flash for coding and agentic tasks | 1M |
ante --provider antix --model claude-sonnet-5 # OAuth
ante --provider antix-api-key --model claude-sonnet-5 # ANTIX_API_KEY
Local
Run GGUF models locally via the built-in llama.cpp engine — no API key required. local is a wildcard provider; the available model depends on what the offline server has loaded, and the entry exists in the catalog only while a live server is registered. Selecting local with no server running gates the session with a notice until you start or attach one. See Offline Mode for setup.
ante --provider local
catalog.json schema
~/.ante/catalog.json is merged on top of the built-in presets at startup. It has two optional top-level keys, both maps keyed by id:
{
"providers": { /* add or override providers */ },
"models": { /* override fields on existing models */ }
}
A providers entry whose key matches a built-in (e.g. openai) patches that preset field by field; a new key adds a provider. The map key is the value you pass to --provider. An id (or legacy name) field inside an entry is ignored.
~/.ante can be relocated with the ANTE_HOME environment variable; the catalog is always $ANTE_HOME/catalog.json.
Provider fields
| Field | Required | Description |
|---|---|---|
display_name | New providers: optional | Friendly name shown in the TUI. New providers default to the provider map key when omitted. |
base_url | New providers: ✅ | API base URL. |
wire_style | New providers: ✅ | API dialect Ante speaks — AnthropicMessage, OpenAiCompatible, OpenAiResponse, or Gemini. |
auth | — | How to authenticate (see Authentication). Omit for a provider that needs no key. |
http_headers | — | Extra headers sent with every request, as a string→string map. |
extra_body | — | Provider-specific JSON fields merged into every chat and streaming request body (see Extra request fields). |
supports_web_search | — | Whether the provider exposes a native web-search affordance. When true, the WebSearch tool is added to sessions on this provider automatically; when false (the default), WebSearch is not offered. |
preferred_models | — | Models shown for this provider in the picker and used as provider defaults (see Model fields). For built-in provider overlays, matching model ids are patched and new ids are appended; omitted leaves the preset list unchanged. |
stream_idle_timeout_secs | — | How long a provider request may remain idle before it fails, in seconds. For streaming calls, this covers both the wait for the first event and silence between later events over SSE or WebSocket; for buffered calls, it bounds the whole request while the response is collected. Defaults to 300. Raise it for a slow local or proxied endpoint; lower it to fail over from a stalled one sooner. |
{
"providers": {
"my-provider": {
"display_name": "My Provider",
"base_url": "https://api.example.com/v1",
"wire_style": "OpenAiCompatible",
"auth": { "bearer": { "env_key": "MY_PROVIDER_API_KEY" } },
"http_headers": { "X-Org": "my-team" },
"preferred_models": [
{
"id": "my-model",
"description": "My fine-tuned model",
"max_tokens": 32000,
"context_limit": 200000,
"effort": "medium",
"supported_efforts": ["low", "medium", "high"]
}
]
}
}
}
For built-in providers, include only the fields you want to change. Optional
fields with null clear the preset value, which is useful when repointing a
provider at a local proxy that should not send the built-in auth or headers:
{
"providers": {
"openai": {
"base_url": "http://localhost:8080/v1",
"auth": null,
"http_headers": null
}
}
}
Extra request fields
Some gateways and proxies require parameters Ante doesn't model — a service tier, a routing hint, a vendor-specific beta block. extra_body is a JSON object merged into the top level of every chat and streaming request body Ante sends to that provider:
{
"providers": {
"my-gateway": {
"base_url": "https://gateway.example.com/v1",
"wire_style": "OpenAiCompatible",
"auth": { "bearer": { "env_key": "MY_GATEWAY_API_KEY" } },
"extra_body": {
"service_tier": "priority",
"routing": { "region": "us-east" }
}
}
}
}
Values are passed through verbatim, so any JSON shape works. On a built-in provider overlay, extra_body merges key by key into the preset's — matching keys are replaced, others are left alone.
extra_body can only add fields, never override the ones Ante generates for the selected wire_style:
wire_style | Reserved keys |
|---|---|
AnthropicMessage | model, max_tokens, messages, system, temperature, tools, stream, thinking, stop_sequences, output_config, cache_control |
OpenAiCompatible | model, messages, reasoning_effort, max_tokens, stream, stream_options, temperature, top_p, top_k, stop, tools, tool_choice, thinking, enable_thinking, thinking_budget, enable_search, search_options |
OpenAiResponse | model, instructions, input, tools, tool_choice, parallel_tool_calls, max_output_tokens, temperature, reasoning, stream, include, store |
Gemini | contents, systemInstruction, generationConfig, tools, toolConfig |
A reserved key is dropped at catalog load and named in the startup notice; the rest of the provider still loads. To change one of these, use the model fields or the environment overrides instead:
Skipped 1 entry in ~/.ante/catalog.json:
- providers.my-gateway.extra_body: ignoring Ante-owned request field(s): model
Authentication
auth is a tagged object: the tag chooses where the credential goes, and the credential is either an environment variable (env_key) or one of Ante's built-in OAuth flows (oauth_preset).
| Form | JSON | Sends |
|---|---|---|
| Bearer token | { "bearer": { "env_key": "MY_KEY" } } | Authorization: Bearer <token> |
| Custom header | { "header": { "name": "x-api-key", "env_key": "MY_KEY" } } | <name>: <token> |
| Query param | { "query": { "name": "api_key", "env_key": "MY_KEY" } } | ?<name>=<token> |
Swap env_key for oauth_preset to authenticate through a built-in OAuth flow (anthropic, openai, or antix) instead of an env var:
"auth": { "bearer": { "oauth_preset": "anthropic" } }
A provider counts as authenticated when its credential is present — the env var is set and non-empty, or the OAuth token exists on disk. Providers with no auth block are always authenticated. Unauthenticated providers are skipped during auto-detection and shown last in the picker.
Model fields
The same fields describe a model fully inside a provider's preferred_models (where id is required) or partially under models (where the map key supplies the id). Every field except the id is optional:
| Field | Description |
|---|---|
id | Model id. Required in preferred_models (name is accepted as a legacy alias); supplied by the map key under models. |
display_name | Friendly name. |
description | Short description shown in the model picker. |
temperature | Sampling temperature. On AnthropicMessage providers, extended thinking requires 1 — any other value with an effort level set fails the turn with an explicit message. |
top_p | Nucleus sampling cutoff. |
top_k | Top-k sampling cutoff. |
max_tokens | Maximum output tokens per turn. On AnthropicMessage providers that take an explicit thinking budget, it must exceed 1024 — the API's minimum budget — when an effort level is set. |
stop_sequences | List of strings that end generation. |
context_limit | Context window size, in tokens. |
effort | Default effort level — min, low, medium, high, xhigh, or max. Omit for models with no reasoning knob (Ante then sends no effort parameter and hides the effort slider). |
supported_efforts | The effort levels this model accepts on this provider, ascending (same values as effort). Replaces the built-in ladder: the effort slider shows exactly these levels, and OpenAI-compatible providers send the selected level as the same-named reasoning_effort (min is sent as minimal). An empty list declares that the model takes no effort setting. Omit to keep the built-in ladder. |
weight_class | Size/cost tier — Feather, Middle, or Heavy. Drives automatic default and auxiliary model selection (see Weight classes). |
support_vision | Whether the model accepts image input. When omitted, Ante infers it from the model id; an image read against a model with no vision support returns the image's metadata instead of its pixels. |
The models section patches a model by id wherever it is defined, layering on top of the canonical spec at resolve time. The built-in presets leave it empty:
{
"models": {
"claude-sonnet-5": { "effort": "high", "max_tokens": 64000 }
}
}
Weight classes
Every built-in model carries a weight_class — Feather (small/fast/cheap), Middle, or Heavy (largest/most capable). Ante uses it to pick models without you naming one:
- Default model — selecting a provider with no explicit model resolves to its heaviest model.
- Ambient UI calls — cosmetic thinking phrases and next-prompt suggestions use the provider's lightest model when it is classified as Feather or Middle. WebFetch returns page content directly to the active session model and does not use this path.
Models with no weight_class set fall back to catalog order. Set weight_class on a custom model to steer these choices.
How a model and provider are chosen
When Ante resolves a model id it layers three sources, last wins:
- Canonical spec — the first provider (in catalog order) whose
preferred_modelslists that id. An unknown id falls back to a bare default spec. modelsoverride — your partial patch for that id, if any.- Environment overrides — the process env vars below win over everything.
Providers are matched to models too. If you pass only --model, Ante picks an authenticated provider whose preferred_models list contains that id, falling back to an authenticated provider with no preferred_models, then to the default provider.
If you pass both --provider and --model, the explicit provider choice wins as long as that provider is authenticated. Ante still resolves the model id globally first, so known ids inherit catalog metadata and user overrides even when served by a different provider; unknown ids are passed through as bare model specs.
When you don't pass --model/--provider, Ante auto-detects: it uses the first authenticated provider in catalog order and that provider's heaviest-weight model (see Weight classes), falling back to local if nothing is authenticated.
Environment overrides
These process env vars override catalog values for the session without editing the file:
| Variable | Overrides |
|---|---|
MODEL_BASE_URL | Base URL for all providers (a per-provider var like ANTHROPIC_BASE_URL takes precedence). |
MODEL_TEMPERATURE | temperature |
MODEL_TOP_P | top_p |
MODEL_MAX_TOKENS | max_tokens |
MODEL_CONTEXT_LIMIT | context_limit |
Effort has no env override — set it per run with the --effort CLI flag or per model via the effort field.
Several presets also honor a dedicated base-URL env var that takes precedence over MODEL_BASE_URL: ANTHROPIC_BASE_URL, OPENAI_BASE_URL, OPENAI_COMPATIBLE_BASE_URL, OPENROUTER_BASE_URL, DEEPSEEK_BASE_URL.
Error handling
A bad entry doesn't sink the whole file. Ante parses catalog.json leniently: any provider or model entry that fails to deserialize is skipped, and the rest still load. Skipped entries are reported at startup, e.g.:
Skipped 1 entry in ~/.ante/catalog.json:
- providers.my-provider: missing field `base_url`
Only a file that isn't a JSON object at all is rejected outright. A missing catalog.json is fine — Ante just uses the built-in presets.
Related
- Providers — choosing a provider and customization recipes
- Storage Reference — where
catalog.jsonlives on disk - Offline Mode — running local GGUF models