Models and providers
The BYOK provider matrix — nine providers plus any local OpenAI-compatible server, with auto-detection and per-invocation pinning.
Stella is bring-your-own-key and model-agnostic: it ships adapters for nine providers plus any OpenAI-compatible endpoint, and it picks one automatically from the keys you have set.
The provider matrix
| Provider | Env var | Default model |
|---|---|---|
| Anthropic (Claude) | ANTHROPIC_API_KEY | claude-fable-5 |
| OpenAI (GPT) | OPENAI_API_KEY | gpt-5.5 |
| Google Gemini | GEMINI_API_KEY (alias GOOGLE_API_KEY) | gemini-3-pro |
| Google Vertex AI | VERTEX_ACCESS_TOKEN + VERTEX_PROJECT_ID | gemini-3-pro |
| Amazon Bedrock | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY | Claude via the Converse API |
| xAI (Grok) | XAI_API_KEY | grok-4 |
| DeepSeek | DEEPSEEK_API_KEY | deepseek-chat |
| Z.ai (GLM) | ZAI_API_KEY | glm-5.2 |
| OpenRouter | OPENROUTER_API_KEY | auto |
| Local | none — use --base-url | whatever your server hosts |
Check what Stella has detected at any time:
stella models # every provider, its models, and key status
stella config # the fully resolved configurationAuto-detection and pinning
With one key set, Stella uses that provider. With several, pin one per invocation:
stella --model zai/glm-5.2 run "fix the failing test"
stella --model anthropic/claude-fable-5 chat
export STELLA_MODEL=openai/gpt-5.5 # or pin via env for the whole shellBedrock is deliberately last in auto-detection order, so having generic AWS credentials exported never hijacks provider selection.
Cloud-credential providers
Vertex AI takes a ready OAuth token plus a project id:
export VERTEX_ACCESS_TOKEN=$(gcloud auth print-access-token)
export VERTEX_PROJECT_ID=my-project # or GOOGLE_CLOUD_PROJECT
export VERTEX_LOCATION=global # optional, default globalAmazon Bedrock uses the standard AWS env credentials, with optional AWS_SESSION_TOKEN and AWS_REGION (default us-east-1). Requests are SigV4-signed against the Converse API.
Local models and gateways
Any OpenAI-compatible server works with no key at all — Ollama, vLLM, LM Studio, llama.cpp server:
stella --model local/llama3.3 --base-url http://localhost:11434/v1Hosted OpenAI-compatible gateways (Vercel AI Gateway, Azure OpenAI, Together, and the like) work the same way: pass their URL as --base-url.
The credential chain
For each provider, Stella resolves credentials in a fixed order — first hit wins:
--api-keyflag (visible in shell history andps; avoid for anything long-lived)- The provider's environment variable
~/.config/stella/credentials.toml- An interactive prompt
Cost metering
Every model call is metered against the model card's pricing — tokens in and out, cache read hits and misses, and computed cost — and recorded in .stella/stella.duckdb. The per-turn summary in the REPL and the --budget hard limit both read from this same metering, so what you see is what gets enforced.