Skip to main content

LLM config JSON

The format of a file in initial-data/llm-configs/. One file per config.

Example

llm-configs/claude-default.json
{
"id": "00000001-0000-0000-0000-000000000002",
"name": "claude-default",
"provider": "ANTHROPIC",
"model": "${CLAUDE_MODEL:claude-sonnet-4-6}",
"baseUrl": "https://api.anthropic.com",
"apiKey": "${ANTHROPIC_API_KEY}",
"defaultTemperature": 0.7,
"maxOutputTokens": 8192,
"additionalParams": {
"thinking": "adaptive",
"effort": "high"
},
"contextWindowTokens": 200000,
"capabilities": ["TOOL_CALLING", "VISION", "DOCUMENTS"],
"rateLimit": {
"maxConcurrentRequests": 3
},
"retry": {
"enabled": true,
"maxAttempts": 5,
"baseBackoffMillis": 2000,
"maxBackoffMillis": 30000
}
}

A minimal local config (no key needed):

llm-configs/agent-default.json
{
"id": "00000001-0000-0000-0000-000000000000",
"name": "agent-default",
"provider": "LM_STUDIO",
"model": "openai/gpt-oss-120b",
"baseUrl": "http://localhost:1234",
"apiKey": "lm-studio",
"defaultTemperature": 0.7,
"maxOutputTokens": 8192,
"additionalParams": {},
"contextWindowTokens": 131072
}

Fields

FieldTypeDescription
idUUIDStable identifier. Use a fresh UUID for a new config.
namestringUnique name; what an agent references via llmConfigName.
providerenumOne of ANTHROPIC, OPENAI, AZURE_OPENAI, GOOGLE_GEMINI, LM_STUDIO, GROQ, OLLAMA, MISTRAL, DEEPSEEK, TOGETHER, OPENROUTER, PERPLEXITY, FIREWORKS.
modelstringModel id. Supports ${VAR} / ${VAR:default}.
baseUrlstringAPI endpoint (override for proxies / local servers).
apiKeystringAPI key — almost always an env-var placeholder like ${ANTHROPIC_API_KEY}. Literal keys are stored encrypted in the Admin UI (the CLI stores them as-is — use placeholders there).
typeenum?CHAT (default) or EMBEDDING — embedding configs power the vector store.
capabilitiesstring[]?What the model reads and does: any of TOOL_CALLING, VISION (images), DOCUMENTS (PDF), AUDIO_INPUT. VISION and DOCUMENTS decide whether an image or PDF sent with a message reaches the model as content or as a placeholder line. Omitted means not declared — the provider's default applies (Anthropic and OpenAI: tool calling, vision, documents; Gemini: those plus audio; Azure OpenAI: tool calling, vision; local servers and routers: tool calling only). A declared list, [] included, always wins over that default. Chat configs only.
defaultTemperaturenumberSampling temperature (e.g. 0.7).
maxOutputTokensintMax tokens the model may generate per response.
contextWindowTokensintToken budget used to size the working-memory window.
additionalParamsobjectProvider-specific options. For Anthropic e.g. thinking (adaptive/disabled) and effort (low, medium, high, xhigh, max).
rateLimitobject?Optional. maxConcurrentRequests caps in-flight calls.
retryobject?Optional. enabled, maxAttempts, baseBackoffMillis, maxBackoffMillis. Omitting the block means no retry at all — the built-in defaults only apply when the block is present and enabled.
isAlias / delegatesTobool / stringAlias configs forward to another config by name — useful to give a stable name (agent-default) that you can repoint.
Env-var placeholders

name, model, baseUrl and apiKey support ${VAR} / ${VAR:default}, resolved at use time — the raw placeholder stays in storage. See how API keys resolve and the environment variables page.

See also the LLM configuration reference for the bundled configs and supported providers.