Providers & models
The full provider matrix, how to select a model, the credential chain, and pointing Stella at a local OpenAI-compatible server.
Stella is model-agnostic. It speaks each provider's native wire dialect and auto-detects which provider to use from the API keys you have set.
This page is the quick reference. For per-provider deep dives — setup walkthroughs, provider-specific configuration, and slugs — see API Providers, and for choosing between models (pricing, release dates, what each is best at) see the model guide.
Supported providers
| Provider | id | Primary env var | Default model | Base URL | Dialect |
|---|---|---|---|---|---|
| Anthropic (Claude) | anthropic | ANTHROPIC_API_KEY | claude-fable-5 | https://api.anthropic.com | Anthropic Messages |
| OpenAI (GPT) | openai | OPENAI_API_KEY | gpt-5.5 | https://api.openai.com/v1 | OpenAI Responses |
| Google Gemini | gemini | GEMINI_API_KEY (alias GOOGLE_API_KEY) | gemini-3-pro | https://generativelanguage.googleapis.com/v1beta | Gemini generateContent |
| Google Vertex AI | vertex | VERTEX_ACCESS_TOKEN | gemini-3-pro | project/region-scoped | Gemini generateContent |
| Amazon Bedrock | bedrock | AWS_ACCESS_KEY_ID | Claude via Converse | region-scoped | Bedrock Converse |
| xAI (Grok) | xai | XAI_API_KEY | grok-4 | https://api.x.ai/v1 | OpenAI-compatible |
| DeepSeek | deepseek | DEEPSEEK_API_KEY | deepseek-chat | https://api.deepseek.com/v1 | OpenAI-compatible |
| Z.ai (GLM) | zai | ZAI_API_KEY | glm-5.2 | https://api.z.ai/api/paas/v4 | OpenAI-compatible |
| OpenRouter | openrouter | OPENROUTER_API_KEY | openrouter/auto | https://openrouter.ai/api/v1 | OpenAI-compatible |
| Local | local | none (optional LOCAL_API_KEY) | you choose | pass --base-url | OpenAI-compatible |
List them at any time — with live key status and effective base URLs:
stella modelsSelecting a model
Pin the worker model for a single invocation with --model provider/model_id, or set the
STELLA_MODEL environment variable for the whole shell:
stella --model zai/glm-5.2 run "fix the failing test"
export STELLA_MODEL=anthropic/claude-fable-5With no --model, Stella auto-detects: it selects the first provider that has a
resolvable credential, in preference order — zai, anthropic, openai, xai,
deepseek, gemini, openrouter, then vertex and bedrock last.
Vertex and Bedrock sit last in auto-detection on purpose: they key off generic cloud
credentials (VERTEX_ACCESS_TOKEN, AWS_ACCESS_KEY_ID) that are often present for
unrelated reasons. Auto-detection never prefers them over an explicitly-configured
provider — pin them with --model vertex/… or --model bedrock/… when you want them.
The credential chain
For the selected provider, Stella resolves the API key in this order — first hit wins:
--api-keyflag (needs an explicit--model provider/...)- The provider's env var (and aliases, e.g.
GOOGLE_API_KEYfor Gemini) settings.jsonproviders.<id>.api_key~/.config/stella/credentials.toml- Interactive prompt (on a TTY) — the entered key is saved to
credentials.toml, so you are only prompted once
See Credentials for the file format and precedence details.
Prefer an env var, settings.json, or credentials.toml over --api-key for anything
long-lived — a flag value is visible in shell history and in ps output.
Cloud providers with extra configuration
Vertex AI also needs a project — set VERTEX_PROJECT_ID (or GOOGLE_CLOUD_PROJECT),
and optionally VERTEX_LOCATION (defaults to global). The access token is typically
export VERTEX_ACCESS_TOKEN=$(gcloud auth print-access-token).
Amazon Bedrock needs AWS_SECRET_ACCESS_KEY alongside AWS_ACCESS_KEY_ID, plus an
optional AWS_SESSION_TOKEN and AWS_REGION / AWS_DEFAULT_REGION (defaults to
us-east-1).
Local / any OpenAI-compatible server
The local pseudo-provider points at any OpenAI-compatible endpoint — Ollama, vLLM, LM
Studio, or a llama.cpp server. It is never auto-detected and needs no API key:
stella --model local/llama3.3 --base-url http://localhost:11434/v1 chatThe id local is reserved and cannot be redefined in settings.json — --base-url
(or its env form STELLA_BASE_URL) is always required with --model local/<model>. To
avoid retyping the endpoint, either export STELLA_BASE_URL, or define your own custom
provider under a non-reserved id in settings.json — e.g.
providers.myollama with a base_url (its dialect defaults to openai-compatible) — and
select it with --model myollama/<model>.
Overriding a provider's defaults
Any built-in provider's base URL, key, display name, or default model can be overridden in
settings.json — the recommended way to, for example,
route Z.ai through its coding-plan endpoint without a provider-specific environment
variable. For personal routing like a subscription endpoint, put the override in user
scope (~/.config/stella/settings.json): project-scope base_url/api_key overrides
are held back by the
trust boundary until you set
STELLA_TRUST_PROJECT=1. Ready-to-paste setups, organized by use case, live in
Examples & recipes — including the
Z.ai coding-plan recipe.