🎯

dust-llm

🎯Skill

from dust-tt/dust

VibeIndex|
What it does

dust-llm skill from dust-tt/dust

dust-llm

Installation

Install skill:
npx skills add https://github.com/dust-tt/dust --skill dust-llm
4
Last UpdatedJan 26, 2026

Skill Details

SKILL.md

Step-by-step guide for adding support for a new LLM in Dust. Use when adding a new model, or updating a previous one.

Overview

# 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 = {

// ... 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