84 files spanning provider capabilities, model routing, headless runtime, sf auto subsystems, gitbook docs, and test coverage. Snapshotted so headless auto can resume M004 (Production Readiness) S03 (Verification Gate Validation) on a clean tree. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.7 KiB
Provider Setup
Step-by-step setup instructions for every LLM provider SF supports. If you ran the onboarding wizard (sf config) and picked a provider, you may already be configured — check with /model inside a session.
Quick Reference
| Provider | Auth Method | Environment Variable |
|---|---|---|
| Anthropic | OAuth or API key | ANTHROPIC_API_KEY |
| OpenAI | API key | OPENAI_API_KEY |
| Google Gemini | API key | GEMINI_API_KEY or GOOGLE_GENERATIVE_AI_API_KEY |
| OpenRouter | API key | OPENROUTER_API_KEY |
| Groq | API key | GROQ_API_KEY |
| xAI (Grok) | API key | XAI_API_KEY |
| Mistral | API key | MISTRAL_API_KEY |
| GitHub Copilot | OAuth | GH_TOKEN |
| Amazon Bedrock | IAM credentials | AWS_PROFILE or AWS_ACCESS_KEY_ID |
| Vertex AI | ADC | GOOGLE_APPLICATION_CREDENTIALS |
| Azure OpenAI | API key | AZURE_OPENAI_API_KEY |
| Ollama | None (local) | — |
| LM Studio | None (local) | — |
| vLLM / SGLang | None (local) | — |
Built-in Providers
Anthropic (Claude)
Recommended. Anthropic models have the deepest integration: built-in web search, extended thinking, and prompt caching.
Option A — Browser sign-in (recommended):
sf config
# Choose "Sign in with your browser" → "Anthropic (Claude)"
Or inside a session: /login
Option B — API key:
export ANTHROPIC_API_KEY="sk-ant-..."
OpenAI
export OPENAI_API_KEY="sk-..."
Or run sf config and choose "Paste an API key" then "OpenAI".
Google Gemini
export GEMINI_API_KEY="..."
# or
export GOOGLE_GENERATIVE_AI_API_KEY="..."
OpenRouter
OpenRouter aggregates 200+ models from multiple providers behind a single API key.
- Get a key at openrouter.ai/keys
- Set it:
export OPENROUTER_API_KEY="sk-or-..." - In SF, type
/modelto select an OpenRouter model (prefixed withopenrouter/)
To add models not in the built-in list, add them to ~/.sf/agent/models.json. See Custom Models.
Groq
export GROQ_API_KEY="gsk_..."
xAI (Grok)
export XAI_API_KEY="xai-..."
Mistral
export MISTRAL_API_KEY="..."
GitHub Copilot
Uses OAuth — sign in through the browser:
sf config
# Choose "Sign in with your browser" → "GitHub Copilot"
Requires an active GitHub Copilot subscription.
Amazon Bedrock
Bedrock uses AWS IAM credentials:
# Named profile
export AWS_PROFILE="my-profile"
# Or IAM keys
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_REGION="us-east-1"
# Or bearer token
export AWS_BEARER_TOKEN_BEDROCK="..."
ECS task roles and IRSA (Kubernetes) are also detected automatically.
Anthropic on Vertex AI
gcloud auth application-default login
export ANTHROPIC_VERTEX_PROJECT_ID="my-project-id"
Azure OpenAI
export AZURE_OPENAI_API_KEY="..."
Local Providers
Local providers run on your machine. They require a models.json configuration file at ~/.sf/agent/models.json because SF needs to know the endpoint URL and available models.
The file reloads each time you open /model — no restart needed.
Ollama
-
Install and start Ollama:
brew install ollama ollama serve -
Pull a model:
ollama pull llama3.1:8b -
Create
~/.sf/agent/models.json:{ "providers": { "ollama": { "baseUrl": "http://localhost:11434/v1", "api": "openai-completions", "apiKey": "ollama", "compat": { "supportsDeveloperRole": false, "supportsReasoningEffort": false }, "models": [ { "id": "llama3.1:8b" } ] } } } -
In SF, type
/modeland select your Ollama model.
LM Studio
- Install LM Studio
- Go to "Local Server" tab, load a model, click "Start Server" (default port 1234)
- Create
~/.sf/agent/models.json:{ "providers": { "lm-studio": { "baseUrl": "http://localhost:1234/v1", "api": "openai-completions", "apiKey": "lm-studio", "compat": { "supportsDeveloperRole": false, "supportsReasoningEffort": false }, "models": [ { "id": "your-model-name" } ] } } }
vLLM
{
"providers": {
"vllm": {
"baseUrl": "http://localhost:8000/v1",
"api": "openai-completions",
"apiKey": "vllm",
"compat": {
"supportsDeveloperRole": false,
"supportsReasoningEffort": false,
"supportsUsageInStreaming": false
},
"models": [
{ "id": "meta-llama/Llama-3.1-8B-Instruct" }
]
}
}
}
SGLang
{
"providers": {
"sglang": {
"baseUrl": "http://localhost:30000/v1",
"api": "openai-completions",
"apiKey": "sglang",
"compat": {
"supportsDeveloperRole": false,
"supportsReasoningEffort": false
},
"models": [
{ "id": "meta-llama/Llama-3.1-8B-Instruct" }
]
}
}
}
Custom OpenAI-Compatible Endpoints
Any server that implements the OpenAI Chat Completions API can work with SF — proxies (LiteLLM, Portkey, Helicone), self-hosted inference, new providers.
Quickest path:
sf config
# Choose "Paste an API key" → "Custom (OpenAI-compatible)"
# Enter: base URL, API key, model ID
This writes ~/.sf/agent/models.json for you. See Custom Models for manual setup.
Verifying Your Setup
- Launch SF:
sf - Check available models:
/model - Select your model from the picker
- Send a test message to confirm it responds
If the model doesn't appear, check:
- The environment variable is set in the current shell
models.jsonis valid JSON- The server is running (for local providers)
Common Issues
| Problem | Cause | Fix |
|---|---|---|
| "Authentication failed" with valid key | Key not visible to SF | Export in the same terminal, or save via sf config |
OpenRouter models not in /model |
No API key set | Set OPENROUTER_API_KEY and restart |
| Ollama returns empty responses | Server not running or model not pulled | Run ollama serve and ollama pull <model> |
| LM Studio model ID mismatch | ID doesn't match server | Check LM Studio's server tab for the exact identifier |
developer role error |
Local server doesn't support it | Set compat.supportsDeveloperRole: false |
stream_options error |
Server doesn't support streaming usage | Set compat.supportsUsageInStreaming: false |
| Cost shows $0.00 | Default for custom models | Add cost field to model definition |