[trace-mcp]

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