AI configuration
Configuring AI models
Marble's AI features (case review, rule builder, rule description, screening hit suggestion) each rely on an LLM call. The configuration allows you to choose the model for two tiers:
light: fast, cheap steps (summaries, formatting, simple instructions)heavy: steps that need a stronger model (generating a rule, writing a full case review)
Each AI feature already knows internally which tier(s) it needs. You configure the model behind each tier globally, and optionally per feature.
Default configuration
Marble ships with a default configuration:
{
"default_light_model": "gemini-2.5-flash",
"default_heavy_model": "gemini-2.5-pro",
"rule_builder": {
"heavy_model": "claude-opus-4-6"
}
}default_light_modelanddefault_heavy_modelare the models used for the light and heavy tiers by any feature that doesn't specify its own.rule_builderis override: it usesclaude-opus-4-6instead of the globaldefault_heavy_modelfor its heavy-tier calls.
Resolution order
For a given feature and tier, Marble resolves the model to use like this:
- If the feature has an override for that tier, use it.
- Otherwise, fall back to the global default for that tier (
default_light_model` ordefault_heavy_model).
Which tier each feature uses
| Feature | Key in config | Uses light | Uses heavy |
|---|---|---|---|
| Case review | case_review | ✅ | ✅ |
| Rule description | rule_description | ✅ | ❌ |
| Rule builder | rule_builder | ❌ | ✅ |
| Screening hit suggestion | screening_hit_suggestion | ✅ | ❌ |
Setting a tier a feature doesn't use has **no effect** on that feature, it's simply never read. For example, rule_builder only ever uses heavy, so configuring rule_builder.light_model doesn't change any behavior.
Overriding models for one feature
You don't need to restate the whole configuration to change a single feature. To use a different model only for the rule builder, while keeping Marble's defaults everywhere else:
{
"default_light_model": "gemini-2.5-flash",
"default_heavy_model": "gemini-2.5-pro",
"screening_hit_suggestion": {
"light_model": "gemini-3.6-flash"
}
} Every feature without its own entry (case_review, rule_description, rule_builder) keeps resolving to default_light_model / default_heavy_model.
Available override keys per feature: light_model, heavy_model: both optional, use only the one(s) relevant to that feature's tier(s).
Overriding the configuration in your deployment
If you self-host Marble, you can override the default configuration without modifying anything Marble provides, by setting the environment variable:
AI_AGENT_MODELS_CONFIG_OVERRIDE_FILE=/path/to/your/override.json
This points to a local JSON file on your deployment, following the exact same schema described above. It is merged field by field on top of Marble's base configuration:
- Any field you don't set falls back to Marble's base value.
- You only need to specify what you want to change. For instance, an override file containing just:
{
"rule_builder": {
"heavy_model": "your-custom-model"
}
}- changes only the rule builder's heavy model, leaving default_light_model, default_heavy_model, and every other feature untouched.
Updated about 5 hours ago