ICM CLI
A local CLI stores project decisions and conventions in SQLite, retrieves relevant entries and shares memory across coding agents.
- 621 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- The CLI installs hooks and retains work facts; extraction can use a configured model client.
Install
- Works in
Manual install
brew tap rtk-ai/tap && brew install icmInstalls the CLI through Homebrew. Then `icm init` adds instructions and hooks for detected agents.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The CLI installs hooks and retains work facts; extraction can use a configured model client.
This is third-party code. Review the repository files before installing.
What it does
ICM stores decisions, fixes and preferences in a shared local database. Agents receive important entries at session start and relevant memories with prompts. Manual commands store facts and test retrieval without a language model. Setup writes instructions, skills and hooks for detected clients, with an optional MCP server. Extracting facts from tool output can use an installed model CLI or be disabled in configuration, while storage and retrieval remain local.
Who it is for. For developers switching AI clients while retaining project decisions across sessions.
Good fit when
- Preserve a convention for the next agent.
- Recall a previous bug fix.
- Keep memory scoped to one repository.
- Use keyword search without an embedding-model download.
Not a fit when
- Tool output and work decisions cannot be retained.
- You need exact reproduction of full conversation history.
- Agent configuration cannot be modified.
Example request
Store this project’s authentication convention and test retrieval without embeddings or an external model.Limitations
icm init writes instructions and hooks for detected clients, so inspect the list before normal project work. Automatic extraction may send tool output to an installed model CLI; set `provider = "none"` under `[extraction.summarizer]` to avoid sending that output to a model CLI. The first semantic search downloads a roughly 2 GB model, so use keyword-only retrieval when space is limited. Memory contains work facts; separate projects and remove stale decisions before they affect a new task.
How to disable. Run `icm uninstall --dry-run` first, then remove integrations as documented. Clean the memory database and downloaded model separately.
FAQ
How do I create a project-local database?
Use `icm init --per-project`.
Is MCP added by default?
No. Select `icm init --mode all` to add it.
How do I search without embeddings?
Add `--no-embeddings` to the retrieval command.
How do I check embedding support?
Run `icm embeddings status`.
Why use icm.exe in PowerShell?
icm is already a built-in Invoke-Command alias there.
Discussion
No questions or reviews yet.
Related
CLI toolsA Python terminal coding agent in the manner of Claude Code: reads the repository, edits files, runs commands, with memory, sub-agents and MCP
A persistent-memory MCP server for coding agents: a graph of a project's concepts, architecture and decisions that survives across sessions
A CLI records coding agent sessions locally, replays what happened and shows what the trace could not prove.
An MCP server and CLI in Go: the agent keeps an index of code and database schema in the repository, versions it in Git and reads it whole before each task
A structural code search MCP server for agents: finds the right file by query intent and runs locally
Context Engine: code search and memory for an agent
Context Engine
A skill that teaches an agent to query the Context Engine code index and symbol graph before reading files directly
README in short
ICM separates memory storage and retrieval from automatic fact extraction. The parts can be configured independently for project rules.