Configuration
Configuring the ContextOS retrieval engine via .contextos/config.json.
The config file
ContextOS works out of the box with zero configuration. To fine-tune the engine, add a .contextos/config.json file in your repository, or a global ~/.contextos/config.json. Repo config overrides global, which overrides the built-in defaults in src/config/defaults.ts.
{
"ignorePatterns": ["**/tests/fixtures/**", "**/*.generated.ts"],
"maxTokenBudget": 1200,
"maxRetrievalResults": 25,
"graphExpansionDepth": 2,
"graphExpansionMaxNodes": 20,
"embeddingsEnabled": true,
"embeddingsRetrieval": false,
"pipeline": {
"graphExpansion": true,
"containmentDedup": true,
"diversityFilter": true
}
}Configuration options
ignorePatterns
Glob patterns for files/directories to skip during indexing. Noisy directories (node_modules, .git, dist, __pycache__, …) are always excluded, so use this only for repo-specific noise. Use an ignorePatterns! key (trailing !) to replace the defaults instead of merging.
Token & retrieval budgets
maxTokenBudget(number): default compile budget. Default1200; a per-callget_contextmax_tokensaccepts up to8000.maxRetrievalResults(number): cap on scored chunks before compile. Default25.ftsLimit(number): per-query FTS5 hit limit. Default15.maxChunkTokens/maxSymbolChunkTokens(number): soft caps when creating chunks. Defaults1500/900.
Graph expansion
graphExpansionDepth(number): relationship walk depth. Default2.graphExpansionMaxNodes(number): cap on expanded entities. Default20.
Embeddings
ContextOS uses a local MiniLM model (@xenova/transformers) — there is no external/OpenAI provider and no API key.
embeddingsEnabled(boolean): generate index-time embeddings. Defaulttrue.embeddingsRetrieval(boolean): fuse embedding kNN into query-time retrieval. Defaultfalse— the keyword/RRF path is the accuracy baseline; embeddings act as a confidence-gated fallback.
pipeline
Toggle individual query-time stages.
graphExpansion(boolean, defaulttrue)embeddingFusion(boolean): when unset, followsembeddingsRetrieval; settrue/falseto force.containmentDedup(boolean, defaulttrue)diversityFilter(boolean, defaulttrue)
execAllowRepoScripts
Whether the ctx_execute tool may run the indexed repository's own scripts (npm test, npm run build|lint, npx vitest|jest). Default true. Set to false (or export CONTEXTOS_EXEC_ALLOW_SCRIPTS=0) when indexing untrusted repositories, since those scripts execute repo-controlled code.
Environment variables
CONTEXTOS_EMBEDDINGS=0: disable index-time embeddings.CONTEXTOS_EMBEDDINGS_RETRIEVAL=1: enable embedding fusion at query time.CONTEXTOS_EXEC_ALLOW_SCRIPTS=0: disablectx_executescript execution.CONTEXTOS_REPO_ROOT: the repository root the MCP server operates on.CONTEXTOS_WORKSPACE: workspace name for multi-project isolation.