Config index
Every key the config schema accepts, in schema order, with its type and the default that applies when you leave it out. It is generated from the schema itself, so an option cannot ship without appearing here.
This page answers “does this key exist, and what is it set to if I say nothing”. For what a key is for — and for the sections large enough to have earned their own page — start at configuration, which links on to quality gates, telemetry, daemon memory and decision memory.
Everything is optional: trace-mcp indexes a standard project with no config file
at all. A default of — means the key is a section rather than a value;
_unset_ means there is no default and the feature reads the key only when you
supply it.
| Key | Type | Default |
|---|---|---|
db |
object | — |
db.path |
string | unset |
include |
string[] | built-in list |
exclude |
string[] | built-in list |
follow_symlinks |
boolean | false |
ignore |
object | {} |
ignore.directories |
string[] | [] |
ignore.patterns |
string[] | [] |
ignore.gitignore |
boolean | true |
frameworks |
object | — |
frameworks.laravel |
object | — |
frameworks.laravel.artisan |
object | — |
frameworks.laravel.artisan.enabled |
boolean | true |
frameworks.laravel.artisan.timeout |
number (> 0) | 10000 |
frameworks.laravel.graceful_degradation |
boolean | true |
ai |
object | — |
ai.enabled |
boolean | false |
ai.provider |
onnx | ollama | openai | anthropic | lmstudio | gemini | vertex | voyage | mistral | deepseek | groq | together | xai |
"onnx" |
ai.features |
object | {} |
ai.features.embedding |
boolean | true |
ai.features.inference |
boolean | true |
ai.features.fast_inference |
boolean | true |
ai.base_url |
string | unset |
ai.api_key |
string | unset |
ai.inference_model |
string | unset |
ai.fast_model |
string | unset |
ai.embedding_model |
string | unset |
ai.embedding_dimensions |
number | unset |
ai.summarize_on_index |
boolean | false |
ai.summarize_batch_size |
number (> 0) | 20 |
ai.summarize_kinds |
string[] | ["class","function","method","interface","trait","enum","… |
ai.summarizeFromDocstrings |
boolean | true |
ai.openaiExtraBody |
object | {} |
ai.concurrency |
number (≥ 1, ≤ 32) | 1 |
ai.reranker_model |
string | unset |
ai.vertex_project |
string | unset |
ai.vertex_location |
string | unset |
ai.autoRebuildOnProviderMismatch |
boolean | true |
plugins |
string[] | [] |
security |
object | — |
security.secret_patterns |
string[] | unset |
security.max_file_size_bytes |
number (> 0) | unset |
security.max_files |
number (> 0) | unset |
predictive |
object | — |
predictive.enabled |
boolean | true |
predictive.weights |
object | {} |
predictive.weights.bug |
object | {} |
predictive.weights.bug.churn |
number | 0.2 |
predictive.weights.bug.fix_ratio |
number | 0.2 |
predictive.weights.bug.complexity |
number | 0.2 |
predictive.weights.bug.coupling |
number | 0.15 |
predictive.weights.bug.pagerank |
number | 0.1 |
predictive.weights.bug.authors |
number | 0.15 |
predictive.weights.tech_debt |
object | {} |
predictive.weights.tech_debt.complexity |
number | 0.3 |
predictive.weights.tech_debt.coupling |
number | 0.25 |
predictive.weights.tech_debt.test_gap |
number | 0.25 |
predictive.weights.tech_debt.churn |
number | 0.2 |
predictive.weights.change_risk |
object | {} |
predictive.weights.change_risk.blast_radius |
number | 0.25 |
predictive.weights.change_risk.complexity |
number | 0.2 |
predictive.weights.change_risk.churn |
number | 0.2 |
predictive.weights.change_risk.test_gap |
number | 0.2 |
predictive.weights.change_risk.coupling |
number | 0.15 |
predictive.cache_ttl_minutes |
number | 60 |
predictive.git_since_days |
number | 180 |
predictive.module_depth |
number | 2 |
intent |
object | — |
intent.enabled |
boolean | false |
intent.domain_hints |
object | unset |
intent.custom_domains |
object[] | unset |
intent.auto_classify_on_index |
boolean | true |
intent.classify_batch_size |
number (> 0) | 100 |
runtime |
object | — |
runtime.enabled |
boolean | false |
runtime.otlp |
object | {} |
runtime.otlp.port |
number (≥ 0, ≤ 65535) | 4318 |
runtime.otlp.host |
string | "127.0.0.1" |
runtime.otlp.max_body_bytes |
number (> 0) | 4194304 |
runtime.retention |
object | {} |
runtime.retention.max_span_age_days |
number (> 0) | 7 |
runtime.retention.max_aggregate_age_days |
number (> 0) | 90 |
runtime.retention.prune_interval |
number (≥ 0) | 100 |
runtime.mapping |
object | {} |
runtime.mapping.fqn_attributes |
string[] | ["code.function","code.namespace","code.filepath"] |
runtime.mapping.route_patterns |
string[] | ["^(?:GET\|POST\|PUT\|PATCH\|DELETE\|HEAD\|OPTIONS)\\s+(.+)$"] |
lsp |
object | — |
lsp.enabled |
boolean | false |
lsp.servers |
object | {} |
lsp.auto_detect |
boolean | true |
lsp.max_concurrent_servers |
number (≥ 1, ≤ 4) | 2 |
lsp.enrichment_timeout_ms |
number (≥ 5000, ≤ 600000) | 120000 |
lsp.batch_size |
number (≥ 10, ≤ 1000) | 100 |
scip |
object | — |
scip.enabled |
boolean | false |
scip.auto_detect |
boolean | true |
scip.index_path |
string | unset |
scip.indexers |
object | {} |
scip.ingestion_timeout_ms |
number (≥ 5000, ≤ 600000) | 120000 |
topology |
object | — |
topology.enabled |
boolean | true |
topology.repos |
string[] | [] |
topology.auto_detect |
boolean | true |
topology.auto_discover |
boolean | true |
topology.contract_globs |
string[] | unset |
indexer |
object | — |
indexer.workers |
number (≥ 1, ≤ 32) | unset |
indexer.parallel_initial_index |
number (≥ 1, ≤ 16) | unset |
pipeline |
object | {} |
pipeline.task_cache_ttl_days |
number (≥ 1, ≤ 365) | 30 |
vault |
object | {} |
vault.enabled |
boolean | true |
vault.roots |
string[] | [] |
vault.extra_globs |
string[] | ["**/*.md","**/*.mdx","**/*.markdown"] |
decisions |
object | {} |
decisions.review_threshold |
number (≥ 0, ≤ 1) | 0.75 |
decisions.reject_threshold |
number (≥ 0, ≤ 1) | 0.45 |
memory |
object | {} |
memory.recall |
object | {} |
memory.recall.timeoutMs |
number (≥ 100, ≤ 60000) | 5000 |
memory.heat |
object | {} |
memory.heat.enabled |
boolean | true |
memory.heat.halfLifeDays |
number (≥ 0.5, ≤ 365) | 14 |
memory.heat.freshnessDays |
number (≥ 0.5, ≤ 365) | 7 |
memory.mining |
object | {} |
memory.mining.strategy |
regex | llm | hybrid |
"regex" |
memory.mining.llm |
object | {} |
memory.mining.llm.maxTokensPerSession |
number (≥ 500, ≤ 50000) | 8000 |
memory.mining.llm.minSessionLength |
number (≥ 0) | 500 |
memory.mining.llm.maxSessions |
number (≥ 1) | 50 |
memory.mining.incrementalCursor |
boolean | true |
memory.memo |
object | {} |
memory.memo.enabled |
boolean | true |
memory.memo.regenerateEveryN |
number (≥ 5, ≤ 500) | 50 |
memory.memo.targetTokens |
number (≥ 100, ≤ 2000) | 350 |
memory.memo.maxBudgetTokens |
number (≥ 100, ≤ 4000) | 400 |
memory.memo.historyLimit |
number (≥ 1, ≤ 100) | 10 |
memory.memo.autoRegenerate |
boolean | true |
memory.memo.minTriggerIntervalSec |
number (≥ 60, ≤ 86400) | 600 |
memory.consolidation |
object | — |
memory.consolidation.defaultMinTitleSimilarity |
number (≥ 0, ≤ 1) | 0.4 |
memory.consolidation.defaultMaxDecisions |
number (≥ 1, ≤ 500) | 50 |
memory.consolidation.defaultSameTypeOnly |
boolean | false |
memory.audit_log |
object | — |
memory.audit_log.enabled |
boolean | false |
memory.audit_log.dir |
string | unset |
memory.audit_log.retentionDays |
number (≥ 0, ≤ 3650) | 0 |
memory.weight_tuning |
object | — |
memory.weight_tuning.enabled |
boolean | true |
memory.weight_tuning.min_events |
number (≥ 10, ≤ 10000) | 25 |
memory.background |
object | {} |
memory.background.enabled |
boolean | false |
memory.background.tickIntervalSec |
number (≥ 10, ≤ 3600) | 60 |
memory.background.activityDebounceSec |
number (≥ 0, ≤ 3600) | 120 |
memory.background.idleWindowSec |
number (≥ 60, ≤ 86400) | 3600 |
memory.background.coldThresholdSec |
number (≥ 3600, ≤ 604800) | 86400 |
memory.background.mineMinIntervalSec |
number (≥ 60, ≤ 86400) | 1800 |
memory.background.clusterEveryNDecisions |
number (≥ 5, ≤ 500) | 25 |
memory.background.failureBackoffSec |
number (≥ 60, ≤ 86400) | 3600 |
memory.background.tuneCooldownSec |
number (≥ 3600, ≤ 2592000) | 86400 |
memory.background.tuneEveryNNewEvents |
number (≥ 5, ≤ 1000) | 25 |
quality_gates |
object | — |
quality_gates.enabled |
boolean | true |
quality_gates.fail_on |
error | warning | none |
"error" |
quality_gates.rules |
object | {} |
quality_gates.rules.max_cyclomatic_complexity |
object | — |
quality_gates.rules.max_cyclomatic_complexity.threshold |
number | string | unset |
quality_gates.rules.max_cyclomatic_complexity.severity |
error | warning |
"error" |
quality_gates.rules.max_cyclomatic_complexity.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_cyclomatic_complexity.message |
string | unset |
quality_gates.rules.max_coupling_instability |
object | — |
quality_gates.rules.max_coupling_instability.threshold |
number | string | unset |
quality_gates.rules.max_coupling_instability.severity |
error | warning |
"error" |
quality_gates.rules.max_coupling_instability.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_coupling_instability.message |
string | unset |
quality_gates.rules.max_circular_import_chains |
object | — |
quality_gates.rules.max_circular_import_chains.threshold |
number | string | unset |
quality_gates.rules.max_circular_import_chains.severity |
error | warning |
"error" |
quality_gates.rules.max_circular_import_chains.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_circular_import_chains.message |
string | unset |
quality_gates.rules.max_dead_exports_percent |
object | — |
quality_gates.rules.max_dead_exports_percent.threshold |
number | string | unset |
quality_gates.rules.max_dead_exports_percent.severity |
error | warning |
"error" |
quality_gates.rules.max_dead_exports_percent.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_dead_exports_percent.message |
string | unset |
quality_gates.rules.max_tech_debt_grade |
object | — |
quality_gates.rules.max_tech_debt_grade.threshold |
number | string | unset |
quality_gates.rules.max_tech_debt_grade.severity |
error | warning |
"error" |
quality_gates.rules.max_tech_debt_grade.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_tech_debt_grade.message |
string | unset |
quality_gates.rules.max_security_critical_findings |
object | — |
quality_gates.rules.max_security_critical_findings.threshold |
number | string | unset |
quality_gates.rules.max_security_critical_findings.severity |
error | warning |
"error" |
quality_gates.rules.max_security_critical_findings.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_security_critical_findings.message |
string | unset |
quality_gates.rules.max_antipattern_count |
object | — |
quality_gates.rules.max_antipattern_count.threshold |
number | string | unset |
quality_gates.rules.max_antipattern_count.severity |
error | warning |
"error" |
quality_gates.rules.max_antipattern_count.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_antipattern_count.message |
string | unset |
quality_gates.rules.max_code_smell_count |
object | — |
quality_gates.rules.max_code_smell_count.threshold |
number | string | unset |
quality_gates.rules.max_code_smell_count.severity |
error | warning |
"error" |
quality_gates.rules.max_code_smell_count.scope |
all | new_symbols | changed_symbols |
unset |
quality_gates.rules.max_code_smell_count.message |
string | unset |
telemetry |
object | — |
telemetry.enabled |
boolean | false |
telemetry.max_rows |
number (≥ 0, ≤ 10000000) | 500000 |
telemetry.observability |
object | {} |
telemetry.observability.enabled |
boolean | false |
telemetry.observability.sink |
noop | otlp | langfuse | multi |
"noop" |
telemetry.observability.sampleRate |
number (≥ 0, ≤ 1) | 1 |
telemetry.observability.otlp |
object | {} |
telemetry.observability.otlp.endpoint |
string | "http://localhost:4318/v1/traces" |
telemetry.observability.otlp.headers |
object | {} |
telemetry.observability.otlp.serviceName |
string | "trace-mcp" |
telemetry.observability.otlp.maxQueuedSpans |
number (≥ 1, ≤ 1000000) | 5000 |
telemetry.observability.otlp.requestTimeoutMs |
number (≥ 0, ≤ 600000) | 10000 |
telemetry.observability.langfuse |
object | {} |
telemetry.observability.langfuse.endpoint |
string | "https://cloud.langfuse.com" |
telemetry.observability.langfuse.publicKey |
string | unset |
telemetry.observability.langfuse.secretKey |
string | unset |
telemetry.observability.langfuse.maxQueuedEvents |
number (≥ 2, ≤ 1000000) | 10000 |
telemetry.observability.langfuse.requestTimeoutMs |
number (≥ 0, ≤ 600000) | 10000 |
tools |
object | — |
tools.preset |
string | "minimal" |
tools.include |
string[] | unset |
tools.exclude |
string[] | unset |
tools.descriptions |
object | unset |
tools.description_verbosity |
full | minimal | none |
"full" |
tools.instructions_verbosity |
full | minimal | none |
"full" |
tools.client_profile |
auto | off | claude-code | codex | cursor | vscode | generic |
"auto" |
tools.agent_behavior |
strict | minimal | off |
"off" |
tools.meta_fields |
boolean | (_hints | _budget_warning | _budget_level | _duplicate_warning | _dedup | _optimization_hint | _meta | _duplication_warnings | _methodology | _warnings)[] |
true |
tools.compact_schemas |
boolean | false |
tools.default_format |
json | compact | auto |
"json" |
tools.default_detail_level |
minimal | default | full |
unset |
watch |
object | {} |
watch.enabled |
boolean | true |
watch.debounceMs |
number (≥ 500, ≤ 30000) | 2000 |
logging |
object | {} |
logging.file |
boolean | false |
logging.path |
string | "~/.trace-mcp/run.log" |
logging.level |
trace | debug | info | warn | error | fatal |
"info" |
logging.max_size_mb |
number (> 0, ≤ 500) | 10 |
git |
object | {} |
git.defaultBaseBranch |
string | unset |
idle_timeout_minutes |
number (≥ 0, ≤ 1440) | 30 |
daemon_stability_seconds |
number (≥ 0, ≤ 600) | 30 |
backend_swap_drain_ms |
number (≥ 0, ≤ 60000) | 5000 |
auto_spawn_daemon |
boolean | true |
daemon_spawn_timeout_seconds |
number (≥ 1, ≤ 60) | 20 |
daemon_idle_exit_minutes |
number (≥ 0, ≤ 1440) | 15 |
project_idle_unload_minutes |
number (≥ 0, ≤ 1440) | 30 |
daemon_eager_load_projects |
number (≥ 0, ≤ 1000) | 8 |
index_cache_mb |
number (≥ 1, ≤ 1024) | 16 |
index_mmap_mb |
number (≥ 0, ≤ 4096) | 64 |
hermes |
object | {} |
hermes.enabled |
auto | boolean |
"auto" |
hermes.home_override |
string | unset |
hermes.profile |
string | unset |
One key is worth reading with care: db.path is vestigial. Nothing reads it.
The index location is not configurable — getDbPath() in src/global.ts puts
every project’s database under ~/.trace/index/. The key is still accepted so
existing config files keep validating, and will be dropped in the next major.
Last updated: September 4, 2026