/switch --model <name>.
Capabilities legend:
- π Vision β accepts images as input
- π§ Tools β native tool use (function calling)
- π JSON Mode β guaranteed structured JSON output
- π» Code Exec β native code execution on the provider
- OpenAI
- Anthropic (Claude)
- AWS Bedrock (full catalog)
- Google (Gemini)
- xAI (Grok)
- GitHub Copilot
- ZAI (Zhipu AI)
- MiniMax
- Moonshot (Kimi)
- StackSpot
- OpenRouter
- Devin CLI (Cognition)
- Ollama (Local)
Models ideal for code generation and complex reasoning. Support both Chat Completions API and Responses API.
GPT-5.6 (GA Jul 9, 2026) ships in three named tiers: Sol (flagship), Terra (balanced everyday) and Luna (fast and affordable) β 30, 15 and 6 per MTok respectively. All three work with an API key and with ChatGPT OAuth (
/auth login openai-codex); on the Codex backend ChatCLI sends the required client-identification headers automatically (without them the backend returns 404 for Luna).Routing between Chat Completions and the Responses API is automatic per model via the catalog (
gpt-5.x, gpt-4.1 and o-series prefer Responses; gpt-4o stays on Chat Completions). Force Responses for every model with OPENAI_USE_RESPONSES=true. OAuth sessions always use the Responses API. Streaming is enabled for all models.How model selection works
ChatCLI determines which model to use with the following priority (highest to lowest):--modelflag on the command line:chatcli --model gpt-5.4/switchcommand during a session:/switch --model claude-sonnet-4-6MODELenvironment variable: sets the default modelLLM_PROVIDERenvironment variable: determines the provider (openai, anthropic, google, xai, etc.)- Providerβs default model: each provider has a default model defined in the catalog
Model aliases
Each model has aliases for easier typing. ChatCLI automatically resolves aliases to the canonical model ID. For example:
Aliases are defined in the model catalog and accepted in all contexts:
--model, /switch, and the MODEL variable.
Catalog system
Models are registered in thellm/catalog package with complete metadata. ChatCLI uses the catalog to automatically determine:
- API version β which endpoint and protocol version to use for each model
- Max tokens β context and output limits for managing prompts and responses
- Capabilities β which features are available (vision, tools, JSON mode, etc.)
- Provider-specific headers β for example, the
anthropic-versionheader varies per model
Dynamic model listing
ChatCLI fetches available models directly from each providerβs API, using the configured token or API key. This ensures you see exactly which models your account has access to β including new models not yet in the static catalog.How it works
- When ChatCLI starts or when you switch providers (via
/switch,/auth login, etc.), a background request queries the active providerβs models endpoint - Discovered models are cached for use in the
/switch --modelautocomplete - Each suggestion indicates its origin:
[API](dynamic) or[catalog](static)
Endpoints per provider
Smart autocomplete
When typing/switch --model and pressing Tab, ChatCLI suggests available models:
OAuth and dynamic listing
Dynamic listing works with both API key and OAuth:- Anthropic OAuth: uses
?beta=trueand Chrome-like headers, with automatic gzip decompression - OpenAI OAuth: queries the ChatGPT backend (
/backend-api/models) instead of the standard endpoint - GitHub Copilot OAuth: uses the Device Flow token to query
api.githubcopilot.com/models
/auth login, the model cache is automatically refreshed to reflect the new provider.
Anthropic API versioning
Claude models may use differentanthropic-version header values in API requests. The catalog manages this automatically:
- Newer models (claude-fable-5, claude-sonnet-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6) use the latest API version
- Legacy models (claude-3-opus, claude-3-haiku) may use older versions for compatibility
- ChatCLI sends the correct header for each model without any user intervention