by rtk-ai
Permanent memory for AI agents. Single binary, zero dependencies, MCP native.
# Add to your Claude Code skills
git clone https://github.com/rtk-ai/icmLast scanned: 5/25/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-25T08:22:57.685Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}See how icm compares with popular alternatives.
icm is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by rtk-ai. Permanent memory for AI agents. Single binary, zero dependencies, MCP native. It has 580 GitHub stars.
Yes. icm passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/rtk-ai/icm" and add it to your Claude Code skills directory (see the Installation section above).
icm is primarily written in Rust. It is open-source under rtk-ai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh icm against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어
Tell Claude Code how your project handles auth on Monday, and Tuesday's Gemini CLI session already knows it. ICM keeps what your coding agents learn (decisions, fixes, conventions, preferences) in one SQLite file on your machine, and gives the relevant part back at the start of each session and with each prompt you send. Up to 18 agents and editors share that memory, so you stop re-explaining your project every time you open a session or switch tools.
provider = "none" keeps that local too (see Quickstart).brew tap rtk-ai/tap && brew install icm # or: curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
icm init # instructions, skills and hooks for every agent it detects
That is the whole setup. Open a new session in Claude Code, Codex, Gemini CLI or Copilot CLI: your agent now starts with a short pack of the most important memories of the project it is in (those whose topic carries the repository's name, such as decisions-myapp in a repository called myapp, plus your preferences) and receives the memories relevant to each prompt you send. What it learns from its tool output is queued, and the queue is turned into memories at the end of each Claude Code session; with the other tools, run icm extract-pending (from a cron job, for instance).
Storing and recalling stay on your machine. The automatic extraction hands text to the LLM command-line tool you already use (Claude Code, Codex or Gemini CLI) when one is installed; set provider = "none" under [extraction.summarizer] to keep it entirely local.
To see it work right away, store and recall by hand:
$ icm store -t decisions-myapp -c "Auth uses short-lived JWTs, refreshed through /auth/refresh" -i high
Stored: 01M47YY6CHVZ48BYKQRCRNZTCF
$ icm recall "how does auth work"
memories[1]{id,topic,importance,weight,summary}:
01M47YY6CHVZ48BYKQRCRNZTCF,decisions-myapp,high,0.975,"Auth uses short-lived JWTs, refreshed through /auth/refresh"
The first store or recall with semantic search downloads the multilingual embedding model once (Qdrant/multilingual-e5-large-onnx, about 2 GB). To try ICM without it, add --no-embeddings (keyword recall, as in the output above) or pick a lighter model in the config. icm init writes hooks and instructions into each detected agent's configuration; icm uninstall --dry-run shows how to remove them. Windows, Linux, Nix and building from source: Install.
Answer accuracy on LoCoMo (10 long conversations, 1,540 questions), measured with the public Agent Memory Benchmark harness: the memory system retrieves context, gemini-3.1-pro-preview answers from it, gemini-2.5-flash-lite judges the answer.
| System | LoCoMo accuracy | Context per question | LLM calls to store a memory | Runs as | Result |
|---|---|---|---|---|---|
| ICM 0.11.0 (recall engine v2) | 92.9% (1,430, 1,433 and 1,430 / 1,540 in three runs) | 24.1k tokens | none | one Rust binary, SQLite file | our runs, 2026-10-06 |
| Hindsight | 92.0% (1,417 / 1,540) | 36.2k tokens | LLM fact extraction | Python service, PostgreSQL + pgvector | published by the harness |
| Hybrid search baseline (dense + sparse, RRF) | 79.1% (1,218 / 1,540) | 22.2k tokens | none | Qdrant | published by the harness |
On PersonaMem 32k (589 multiple-choice questions about a user's evolving preferences, same harness and answering model, scored by letter match):
| System | PersonaMem accuracy | Context per question | Result |
|---|---|---|---|
| ICM 0.11.0 (recall engine v2) | 81.7% (486, 486 and 472 / 589 in three runs) | 16.2k tokens | our runs, 2026-10-06 |
| Hindsight | 86.6% (510 / 589) | 15.8k tokens | published by the harness |
| Hybrid search baseline | 84.4% (497 / 589) | 24.2k tokens | published by the harness |
Retrieval alone, on LoCoMo, with no answering model: the share of questions for which at least one of the right sessions is in the top results. This is the evidence for the recall engine itself.
| Recall engine | Search | Top 5 | Top 10 | Top 20 |
|---|---|---|---|---|
| 0.11 (default) | keywords + embedding model | 86.7% | 93.3% | 97.9% |
| 0.11 (default) | keywords only | 88.6% | 94.2% | 97.5% |
0.10 (--engine legacy) |
keywords + embedding model | 76.5% | 83.0% | 87.7% |
0.10 (--engine legacy) |
keywords only | 12.0% | 17.4% | 29.8% |
Both engines were measured with the same 0.11 build. The 0.11 runs received each session's date and the question's date; the 0.10 engine has no date input, so its runs received none.
LongMemEval-S, retrieval only, with no LLM (ICM with its default embedding model; 500 questions; each question comes with about 48 past sessions to search; one memory per session, user turns only, as MemPalace indexes them; no date given to ICM):
| Right sessions in the top 5 | ICM 0.11.0 | MemPalace | agentmemory | BM25 alone |
|---|---|---|---|---|
| At least one (the published measure) | 97.4% (487 / 500) | 96.6% (483 / 500) | 95.2% (476 / 500) | 94.6% |
| All of them | 88.6% (443 / 500) | 85.0% | 81.8% | 81.2% |
MemPalace and agentmemory figures are recomputed with our scorer from the result files each project publishes; they match their published numbers. agentmemory indexes all turns of a session; on that unit BM25 alone reaches 96.2% and 83.0%. A plain BM25 already scores in the mid-nineties on the first measure, which is why the second one, all the right sessions, separates the systems better.
What these numbers do and do not show:
f618ed7) and Vertex AI.