# ICM Configuration # # Location (platform-specific): # macOS: ~/Library/Application Support/dev.icm.icm/config.toml # Linux: ~/.config/icm/config.toml # Windows: C:\Users\\AppData\Roaming\icm\icm\config\config.toml # Or override with: ICM_CONFIG=/path/to/config.toml [store] # SQLite database path (default: platform data dir). # Uncomment to use a custom location: # path = "/custom/path/to/memories.db" [memory] default_importance = "medium" # Decay rate per day (0.95 = loses 5% per day) decay_rate = 0.95 # Weight threshold for automatic pruning prune_threshold = 0.1 [embeddings] # Set to false to disable embeddings entirely (no model download, keyword search only) # enabled = false # Embedding model (fastembed model_code). Default: multilingual-e5-small (384d, 100+ languages) # Other options: # "BAAI/bge-small-en-v1.5" — 384d, English-only (fastest) # "Xenova/bge-small-en-v1.5" — 384d, quantized English-only # "intfloat/multilingual-e5-base" — 768d, multilingual (more accurate, slower) # "intfloat/multilingual-e5-large" — 1024d, multilingual (best accuracy, largest) # "Xenova/all-MiniLM-L12-v2" — 384d, English # "jinaai/jina-embeddings-v2-base-code" — 768d, code-optimized model = "intfloat/multilingual-e5-base" [extraction] # Layer 0: rule-based fact extraction (zero LLM cost) enabled = true # Minimum keyword score to keep a fact min_score = 3.0 # Maximum facts per extraction pass max_facts = 10 # Extract every N PostToolUse hook fires (i.e. every N tool calls in a # Claude Code / Gemini / Codex / Copilot session). Lower = more # aggressive (more memories, more noise); higher = quieter. The # `--every` CLI flag on `icm hook post` overrides this. extract_every = 3 # Store the raw tool output as a low-importance memory when the # rule-based extractor produces no facts. Useful as a coarse safety # net; set to `false` if you only want signal-rich extractions. store_raw = true [recall] # Layer 2: context injection before sessions enabled = true # Maximum memories to inject limit = 15 [wakeup] # SessionStart hook (Layer 1): wake-up pack of critical/high-importance # memories injected at session start. # Token budget for the pack (~4 chars/token). Increase for richer context; # decrease if your tool's system prompt is already tight. max_tokens = 500 # Include preference / identity memories regardless of project filter so # user-wide settings (style, language, conventions) leak through into # every project's wake-up. include_preferences = true [mcp] # MCP server transport: "stdio" transport = "stdio" # Custom instructions appended to MCP server description # instructions = "Always recall before starting work"