Providers & Models
Built-in providers (14)
From src/utils/values.ts:
| Provider type | Default base URL | SDK |
|---|---|---|
openai | https://api.openai.com/v1 | @ai-sdk/openai |
openai-compatible | (user-supplied) | @ai-sdk/openai-compatible |
openai-responses | (user-supplied) | @ai-sdk/openai with /responses endpoint |
anthropic | https://api.anthropic.com/v1 | @ai-sdk/anthropic |
google | https://generativelanguage.googleapis.com/v1beta | @ai-sdk/google |
cerebras | (user-supplied) | @ai-sdk/openai-compatible |
minimax (M2.7) | (user-supplied) | @ai-sdk/openai-compatible |
openrouter | https://openrouter.ai/api/v1 | @openrouter/ai-sdk-provider |
xai | (user-supplied) | @ai-sdk/xai |
deepseek | (user-supplied) | @ai-sdk/deepseek |
ollama | http://<your-ollama-host>:<port>/api (default 11434) | ai-sdk-ollama |
burncloud | https://ai.burncloud.com/v1 | @ai-sdk/openai-compatible |
togetherai | (user-supplied) | @ai-sdk/togetherai |
groq | (user-supplied) | @ai-sdk/groq |
cohere | (user-supplied) | @ai-sdk/cohere |
mistral | (user-supplied) | @ai-sdk/mistral |
Adding your first provider
- Open the app, navigate to Settings (gear icon in left drawer).
- Under Default Provider, click Add → pick a provider type (e.g. OpenAI Compatible).
- Fill in: Display Name, Base URL (for non-fixed providers), API Key.
- The provider gets a Share Link at the top of Settings. Copy and share it — others who open it auto-fill their settings.
Custom providers (mix-and-match subproviders)
Beyond the 14 built-ins, you can define a Custom Provider in /settings/providers/:id that maps model names across multiple subproviders:
- Subproviders: each subprovider is itself a provider (built-in or another custom) with a
modelMapfrom your custom model id to the upstream model id. - Fallback provider: if a model id is not in any subprovider's map, the request falls back to this provider.
- Useful when you route cheap queries to one upstream, expensive ones to another, and present them under one alias to your assistants.
Data shape (from src/utils/types.ts):
interface CustomProvider {
id: string
name: string
avatar: Avatar
subproviders: { provider: Provider, modelMap: Record<string, string> }[]
fallbackProvider?: Provider
}
Model selection — the cascade
When a dialog runs a turn, the model is picked in this order:
dialog.modelOverride(set per-conversation via the model picker in the header)assistant.model(set on the assistant used for this dialog)userPerfs.model(the global default, set in Settings → Default Model)
Each model has an inputTypes triple of {user, assistant, tool} string arrays describing what content types it accepts (text, image, audio, pdf).
Common models shortcut
Settings → Common Models is a list of model ids you switch between often. The picker at the top of a dialog has a quick-pick dropdown populated from this list.
System assistant
Settings → System Assistant is a separate (provider, model) pair used for two background jobs:
- Auto-summarizing a conversation title after the first turn
- Extracting artifacts from assistant replies
If left blank, the global default provider/model is used.