Skip to content

Configuration

Mia’s configuration lives in ~/.mia/mia.json. Edit it directly or use the CLI:

Terminal window
mia config # Show all config
mia config get activePlugin # Get a specific value
mia config set maxConcurrency 5 # Set a value
{
"activePlugin": "claude-code",
"fallbackPlugins": ["opencode", "codex"],
"activeModel": "claude-sonnet",
"codingModel": "claude-sonnet-4-6-20250929",
"generalModel": "claude-haiku-4-5",
"classifierModel": "claude-haiku-4-5",
"defaultRoute": "coding",
"models": {
"claude-sonnet": {
"model": "claude-sonnet-4-6-20250929",
"provider": "anthropic",
"contextLimit": 200000,
"maxTokens": 4096,
"input": ["text", "image"]
}
},
"plugins": {
"claude-code": {
"name": "claude-code",
"enabled": true,
"binary": "claude",
"model": "claude-sonnet-4-6-20250929",
"maxConcurrency": 3,
"timeoutMs": 1800000
}
},
"pluginDispatch": {
"verification": {
"enabled": false,
"semanticCheck": true,
"retryOnFailure": true
},
"tracing": {
"enabled": true,
"retentionDays": 30
},
"memoryExtraction": {
"enabled": true,
"minDurationMs": 5000,
"maxFacts": 5
},
"fallback": {
"enabled": true,
"onDispatchError": false
}
},
"memory": {
"ttlDays": 30,
"queryCacheMaxEntries": 100,
"maxRows": 10000,
"pruneIntervalHours": 6
},
"scheduler": {
"defaultTimeoutMs": 300000
},
"maxConcurrency": 3,
"timeoutMs": 1800000,
"codingSystemPrompt": "...",
"p2pSeed": "..."
}
OptionTypeDefaultDescription
activePluginstringCurrently active plugin (claude-code, codex, gemini, opencode)
fallbackPluginsstring[][]Ordered fallback chain if active plugin unavailable
plugins.<name>.enabledbooleantrueWhether plugin is enabled
plugins.<name>.binarystringPath to plugin CLI binary
plugins.<name>.modelstringDefault model for this plugin
plugins.<name>.maxConcurrencynumber3Max concurrent dispatches
plugins.<name>.timeoutMsnumber1800000Dispatch timeout (ms)
OptionTypeDefaultDescription
activeModelstringNamed model config key to use
codingModelstringModel for coding tasks
generalModelstringModel for general chat
classifierModelstringModel for prompt classification
defaultRoutestring"coding"Default route when classifier is uncertain
OptionTypeDefaultDescription
pluginDispatch.verification.enabledbooleanfalseEnable post-dispatch semantic verification
pluginDispatch.verification.semanticCheckbooleantrueUse LLM to verify response quality
pluginDispatch.verification.retryOnFailurebooleantrueRetry with fallback on verification failure
pluginDispatch.tracing.enabledbooleantrueLog all dispatches to trace files
pluginDispatch.tracing.retentionDaysnumber30Days to keep trace logs
pluginDispatch.memoryExtraction.enabledbooleantrueAuto-extract facts from dispatches
pluginDispatch.memoryExtraction.minDurationMsnumber5000Min dispatch duration to trigger extraction
pluginDispatch.memoryExtraction.maxFactsnumber5Max facts per extraction
pluginDispatch.fallback.enabledbooleantrueEnable plugin fallback chain
pluginDispatch.fallback.onDispatchErrorbooleanfalseAlso fallback on dispatch errors
OptionTypeDefaultDescription
memory.ttlDaysnumber30Days before entries are pruned
memory.queryCacheMaxEntriesnumber100Max LRU cache entries
memory.maxRowsnumber10000Max total memory entries
memory.pruneIntervalHoursnumber6How often to run pruning
OptionTypeDefaultDescription
scheduler.defaultTimeoutMsnumber300000Default task timeout (5 min)
OptionTypeDefaultDescription
maxConcurrencynumber3Global max concurrent dispatches
timeoutMsnumber1800000Global dispatch timeout (30 min)
codingSystemPromptstringOverride the default system prompt
p2pSeedstringPersistent P2P seed (auto-generated)