Guide for adding new LLM models to Letta Code. Use when the user wants to add support for a new model, needs to know valid model handles, or wants to update the model configuration. Covers models.json configuration, CI test matrix, and handle validation.
70
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
This skill guides you through adding a new LLM model to Letta Code.
Key files:
src/models.json - Model definitions (required).github/workflows/ci.yml - CI test matrix (optional)src/tools/manager.ts - Toolset detection logic (rarely needed)Query the Letta API to see available models:
curl -s https://api.letta.com/v1/models/ | jq '.[] | .handle'Or filter by provider:
curl -s https://api.letta.com/v1/models/ | jq '.[] | select(.handle | startswith("google_ai/")) | .handle'Common provider prefixes:
anthropic/ - Claude modelsopenai/ - GPT modelsgoogle_ai/ - Gemini modelsgoogle_vertex/ - Vertex AIopenrouter/ - Various providersAdd an entry to src/models.json:
{
"id": "model-shortname",
"handle": "provider/model-name",
"label": "Human Readable Name",
"description": "Brief description of the model",
"isFeatured": true, // Optional: shows in featured list
"updateArgs": {
"context_window": 180000,
"temperature": 1.0 // Optional: provider-specific settings
}
}Field reference:
id: Short identifier used with --model flag (e.g., gemini-3-flash)handle: Full provider/model path from the API (e.g., google_ai/gemini-3-flash-preview)label: Display name in model selectordescription: Brief description shown in selectorisFeatured: If true, appears in featured models sectionupdateArgs: Model-specific configuration (context window, temperature, reasoning settings, etc.)Provider prefixes:
anthropic/ - Anthropic (Claude models)openai/ - OpenAI (GPT models)google_ai/ - Google AI (Gemini models)google_vertex/ - Google Vertex AIopenrouter/ - OpenRouter (various providers)Test with headless mode:
bun run src/index.ts --new --model <model-id> -p "hi, what model are you?"Example:
bun run src/index.ts --new --model gemini-3-flash -p "hi, what model are you?"To include the model in automated testing, add it to .github/workflows/ci.yml:
# Find the headless job matrix around line 122
model: [gpt-5-minimal, gpt-4.1, sonnet-4.5, gemini-pro, your-new-model, glm-4.6, haiku]Models are automatically assigned toolsets based on provider:
openai/* → codex toolsetgoogle_ai/* or google_vertex/* → gemini toolsetdefault toolsetThis is handled by isGeminiModel() and isOpenAIModel() in src/tools/manager.ts. You typically don't need to modify this unless adding a new provider.
"Handle not found" error: The model handle is incorrect. Run the validation script to see valid handles.
Model works but wrong toolset: Check src/tools/manager.ts to ensure the provider prefix is recognized.
051b47f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.