Why Use This
This skill provides specialized capabilities for dust-tt's codebase.
Use Cases
- Developing new features in the dust-tt repository
- Refactoring existing code to follow dust-tt standards
- Understanding and working with dust-tt's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/dust-tt/dust/tree/main/.claude/skills/dust-llm
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 15, 2026, 09:38 AM
Skill Stats
SKILL.md 197 Lines
Total Files 1
Total Size 5.5 KB
License MIT
---
name: dust-llm
description: Step-by-step guide for adding support for a new LLM in Dust. Use when adding a new model, or updating a previous one.
---
# Adding Support for a New LLM Model
This skill guides you through adding support for a newly released LLM.
## Quick Reference
### Files to Modify
| File | Purpose |
|------|---------|
| `front/types/assistant/models/{provider}.ts` | Model ID + configuration |
| `front/lib/api/assistant/token_pricing.ts` | Pricing per million tokens |
| `front/types/assistant/models/models.ts` | Central registry |
| `front/lib/api/llm/clients/{provider}/types.ts` | Router whitelist |
| `sdks/js/src/types.ts` | SDK types |
| `front/components/providers/types.ts` | UI availability (optional) |
| `front/lib/api/llm/tests/llm.test.ts` | Integration tests |
### Prerequisites
Before adding, gather:
- **Model ID**: Exact provider identifier (e.g., `gpt-4-turbo-2024-04-09`)
- **Context size**: Total context window in tokens
- **Pricing**: Input/output cost per million tokens
- **Capabilities**: Vision, structured output, reasoning effort levels
- **Tokenizer**: Compatible tokenizer for token counting
## Step-by-Step: Adding an OpenAI Model
### Step 1: Add Model Configuration
Edit `front/types/assistant/models/openai.ts`:
```typescript
export const GPT_4_TURBO_2024_04_09_MODEL_ID = "gpt-4-turbo-2024-04-09" as const;
export const GPT_4_TURBO_2024_04_09_MODEL_CONFIG: ModelConfigurationType = {
providerId: "openai",
modelId: GPT_4_TURBO_2024_04_09_MODEL_ID,
displayName: "GPT 4 turbo",
contextSize: 128_000,
recommendedTopK: 32,
recommendedExhaustiveTopK: 64,
largeModel: true,
description: "OpenAI's GPT 4 Turbo model for complex tasks (128k context).",
shortDescription: "OpenAI's second best model.",
isLegacy: false,
isLatest: false,
generationTokensCount: 2048,
supportsVision: true,
minimumReasoningEffort: "none",
maximumReasoningEffort: "none",
defaultReasoningEffort: "none",
supportsResponseFormat: false,
tokenizer: { type: "tiktoken", base: "cl100k_base" },
};
```
### Step 2: Add Pricing
Edit `front/lib/api/assistant/token_pricing.ts`:
```typescript
const CURRENT_MODEL_PRICING: Record<BaseModelIdType, PricingEntry> = {
// ... existing
"gpt-4-turbo-2024-04-09": {
input: 10.0, // USD per million input tokens
output: 30.0, // USD per million output tokens
cache_read_input_tokens: 1.0, // Optional: cached reads
cache_creation_input_tokens: 12.5, // Optional: cache creation
},
};
```
### Step 3: Register in Central Registry
Edit `front/types/assistant/models/models.ts`:
```typescript
export const MODEL_IDS = [
// ... existing
GPT_4_TURBO_2024_04_09_MODEL_ID,
] as const;
export const SUPPORTED_MODEL_CONFIGS: ModelConfigurationType[] = [
// ... existing
GPT_4_TURBO_2024_04_09_MODEL_CONFIG,
];
```
### Step 4: Update Router Whitelist
Edit `front/lib/api/llm/clients/openai/types.ts`:
```typescript
export const OPENAI_WHITELISTED_MODEL_IDS = [
// ... existing
GPT_4_TURBO_2024_04_09_MODEL_ID,
] as const;
```
### Step 5: Update SDK Types
Edit `sdks/js/src/types.ts`:
```typescript
const ModelLLMIdSchema = FlexibleEnumSchema<
// ... existing
| "gpt-4-turbo-2024-04-09"
>();
```
### Step 6: Add to UI (Optional)
Edit `front/components/providers/types.ts`:
```typescript
export const USED_MODEL_CONFIGS: readonly ModelConfig[] = [
// ... existing
GPT_4_TURBO_2024_04_09_MODEL_CONFIG,
] as const;
```
### Step 7: Test (Mandatory)
Edit `front/lib/api/llm/tests/llm.test.ts`:
```typescript
const MODELS = {
// ... existing
[GPT_4_TURBO_2024_04_09_MODEL_ID]: {
runTest: true, // Enable for testing
providerId: "openai",
},
};
```
Run test:
```bash
RUN_LLM_TEST=true npx vitest --config lib/api/llm/tests/vite.config.js lib/api/llm/tests/llm.test.ts --run
```
**After test passes**, set `runTest: false` to avoid expensive CI runs.
## Adding Anthropic Models
Same pattern with Anthropic-specific files:
1. `front/types/assistant/models/anthropic.ts` - Add `CLAUDE_X_MODEL_ID` and config
2. `front/lib/api/llm/clients/anthropic/types.ts` - Add to `ANTHROPIC_WHITELISTED_MODEL_IDS`
3. `front/types/assistant/models/models.ts` - Register in central registry
4. `front/lib/api/assistant/token_pricing.ts` - Add pricing
5. `sdks/js/src/types.ts` - Update SDK types
6. Test and validate
## Model Configuration Properties
| Property | Description |
|----------|-------------|
| `supportsVision` | Can process images |
| `supportsResponseFormat` | Supports structured output (JSON) |
| `minimumReasoningEffort` | Min reasoning level ("none", "low", "medium", "high") |
| `maximumReasoningEffort` | Max reasoning level |
| `defaultReasoningEffort` | Default reasoning level |
| `tokenizer` | Tokenizer config for token counting |
## Validation Checklist
- [ ] Model config added to provider file
- [ ] Pricing updated (input, output, cache if applicable)
- [ ] Registered in central registry (`MODEL_IDS` + `SUPPORTED_MODEL_CONFIGS`)
- [ ] Router whitelist updated
- [ ] SDK types updated
- [ ] UI config added (if needed)
- [ ] Integration test passes
- [ ] Test disabled after validation
## Troubleshooting
**Model not in UI**: Check `USED_MODEL_CONFIGS` in `front/components/providers/types.ts`
**API calls failing**: Verify model ID matches provider's exact identifier, check router whitelist
**Token counting errors**: Validate context size and tokenizer configuration
**Pricing issues**: Ensure prices are per million tokens in USD
## Reference
- See `front/types/assistant/models/openai.ts` and `anthropic.ts` for examples
- Provider docs: OpenAI, Anthropic, Google, Mistral