Stelladocs
Getting Started

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

ProvideridPrimary env varDefault modelBase URLDialect
Anthropic (Claude)anthropicANTHROPIC_API_KEYclaude-fable-5https://api.anthropic.comAnthropic Messages
OpenAI (GPT)openaiOPENAI_API_KEYgpt-5.5https://api.openai.com/v1OpenAI Responses
Google GeminigeminiGEMINI_API_KEY (alias GOOGLE_API_KEY)gemini-3-prohttps://generativelanguage.googleapis.com/v1betaGemini generateContent
Google Vertex AIvertexVERTEX_ACCESS_TOKENgemini-3-proproject/region-scopedGemini generateContent
Amazon BedrockbedrockAWS_ACCESS_KEY_IDClaude via Converseregion-scopedBedrock Converse
xAI (Grok)xaiXAI_API_KEYgrok-4https://api.x.ai/v1OpenAI-compatible
DeepSeekdeepseekDEEPSEEK_API_KEYdeepseek-chathttps://api.deepseek.com/v1OpenAI-compatible
Z.ai (GLM)zaiZAI_API_KEYglm-5.2https://api.z.ai/api/paas/v4OpenAI-compatible
OpenRouteropenrouterOPENROUTER_API_KEYopenrouter/autohttps://openrouter.ai/api/v1OpenAI-compatible
Locallocalnone (optional LOCAL_API_KEY)you choosepass --base-urlOpenAI-compatible

List them at any time — with live key status and effective base URLs:

stella models

Selecting 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-5

With 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:

  1. --api-key flag (needs an explicit --model provider/...)
  2. The provider's env var (and aliases, e.g. GOOGLE_API_KEY for Gemini)
  3. settings.json providers.<id>.api_key
  4. ~/.config/stella/credentials.toml
  5. 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 chat

The 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.

Stella is totally free and open source, dual-licensed MIT or Apache 2.0— your choice: MIT's three-paragraph simplicity, or Apache 2.0's explicit patent grant that enterprises prefer. Use it, fork it, embed it, ship it — no account, no phone-home, no strings. What that means →

On this page