A cyber brain for your AI. It never forgets a detail, remembers exactly what you said, and learns how you work over time. Free, local, works with Cursor, Claude Code, Codex, OpenClaw, Hermes and more. MIT.
Python
890
256 commits
updated Sep 16, 2026
English | 中文
Keeps every conversation word-for-word and gives your AI agent the right
context on every turn.
Quick start · How it works · Benchmarks · Compatibility · Technical reference
A local server that speaks the MCP protocol and gives Claude, and any other MCP-compatible agent, a long-term memory. It captures every turn of every session verbatim, organizes those captures over time into a personal map of who you are, and serves a small slice of relevant memory back at the start of each new conversation and turn. You never have to say "remember this" or "what did we say last time?".
I built this for myself. It worked. The benchmarks were mostly for my own curiosity.
Under the hood it's not a wrapper around someone else's vector store and graph library — the parts that matter are my own code: the storage engine, the community-detection algorithm, the hyperdimensional memory substrate, and a native engine that makes it fast.
And unlike cloud memory services, there's no API key, no account, and no telemetry: the engine, the store, and the embeddings all run locally. The only things that leave your machine are the normal model calls your CLI already makes, plus one optional nightly consolidation step that asks your model for a single insight through the same subscription your CLI already uses.
python3.12 -m pip install -U iai-pme
Then run inside Claude Code:
/plugin marketplace add CodeAbra/iai-personal-memory-engine
/plugin install iai-memory@iai-pme
Restart the session, then verify:
iai --version
iai-mcp daemon status
iai-mcp doctor
Python 3.11 is also supported.
curl -fsSL https://raw.githubusercontent.com/CodeAbra/iai-personal-memory-engine/main/scripts/bootstrap.sh | bash
This builds the Rust engine and TypeScript wrapper, installs the background service and hooks, registers Claude Code, and runs the health check. It requires Git, Python 3.11/3.12, Node.js 18+, and Rust. To inspect the steps without changing anything:
curl -fsSL https://raw.githubusercontent.com/CodeAbra/iai-personal-memory-engine/main/scripts/bootstrap.sh | bash -s -- --dry-run
python3.12 -m pip install -U iai-pme
iai-mcp crypto init
iai-mcp daemon install
iai-mcp capture-hooks install --target codex
Replace codex with cursor, antigravity, hermes, openclaw, or all.
MCP tools work with any MCP-over-stdio client; automatic capture and context
injection depend on the hooks exposed by the host. See the
technical reference.
New stores use the native engine format by default; an existing store keeps its
current format on upgrade. To move an existing legacy SQLite store onto the
native engine, run iai-mcp migrate-to-lilli — iai-mcp doctor prints the exact
command, and the technical reference documents the full flow.
| Event | Action |
|---|---|
| Prompt | New turns are appended to a session buffer as file IO; no embedding or engine RPC is needed on the capture path |
| Session end | Remaining transcript content is rolled over for ingestion; hook failures do not block the host |
| Session start | A bounded memory prefix is exposed as host context; an empty store or unavailable engine yields empty output |
| Later turns | Supported hosts receive a small foresight or delta pack with age and revision markers |
| Idle time | Captures are embedded, deduplicated, encrypted, inserted, clustered, consolidated, reinforced, and decayed |
The background process is called the daemon in the CLI. The MCP wrapper and
iai can still read the local store directly when it is asleep or temporarily
unavailable.
| Tier | Contains |
|---|---|
| Episodic | Timestamped, write-once fragments of what was said |
| Semantic | Summaries induced from related episodes during idle consolidation |
| Procedural | Ten bounded behavioural parameters learned over time |
Distinct hyperdimensional representations keep literal detail, semantic structure, and behavioural tendencies from collapsing into one vector surface.
The local, LLM-free recall path combines semantic similarity, graph evidence,
recency, temporal validity, and lexical evidence. memory_recall returns both
hits and anti_hits; memory_contradict closes the old record's validity
interval, creates a new record, and links the two.
While idle, the engine groups related episodes, induces semantic memory,
reinforces useful paths, and decays weak unreviewed edges. One optional REM step
may invoke claude -p through the user's existing Claude subscription, capped
at no more than 1% of the daily quota. No Anthropic API key is required.
| Component | Role |
|---|---|
| Hippo | Encrypted records, vector index, and graph in one local store |
| MOSAIC | Leiden-family community detection with stable community identity |
| Lilli HD | Hyperdimensional substrate and structural recall |
| Native engine | Rust embedder and graph kernels |
iai brain
The local dashboard searches the store, exposes graph neighbourhoods and contradictions, pins or fades memories, ingests files, controls the background engine, and reports token-use estimates from your own store.
iai recall · temporal-recall · search · ask · capture · teach · upload
iai watch · brain · status · last
iai upload accepts documents, Office files, e-books, source code,
configuration files, and directories. Full formats and administrative commands
are listed in docs/REFERENCE.md.
Every harness ships in bench/; methodology and reproduce commands are in
BENCHMARKS.md.
| Benchmark | Result |
|---|---|
| Rescue@10 after contradiction | 1.000 |
| Historical-verbatim hit@10 | 1.000 |
| LongMemEval-S R@5, product embedder | 0.962 |
| LongMemEval-S R@10, product embedder | 0.978 |
Historical-verbatim retrieval uses a flat-cosine baseline of about 0.71. With
the matched all-MiniLM-L6-v2 embedder, iai-memory and mempalace v3.3.6 both
score R@5 0.966 and R@10 0.978; no win is claimed.
On the author's store, an automatically injected memory pack averaged about
350 tokens versus about 2,850 tokens for the agent-search round trip it
replaced: approximately 88% cheaper on that measured workload. This does not
apply to explicit memory_recall, whose default response budget is 1,500
tokens.
memory_recall memory_temporal_recall
memory_recall_structural memory_search
memory_capture memory_contradict
memory_reinforce memory_consolidate
profile_get_set topology
schema_list events_query
episodes_recent curiosity_pending
Fourteen tools cover cue, temporal, structural, and lexical recall; capture and correction; reinforcement and consolidation; behavioural-profile control; and store introspection.
| Host | Ambient behaviour |
|---|---|
| Claude Code | Session-start recall, per-turn updates, turn capture, and session capture |
| Codex CLI | Full integration through Codex hooks |
| Cursor | Session-start recall and capture; no per-turn text injection |
| Antigravity | Recall per invocation and lossless transcript capture |
| Hermes 0.5.0+ | Recall before model calls and capture from its message store |
| OpenClaw | MCP tools on request; no ambient shell hooks |
| Gemini CLI and other MCP hosts | MCP tools; no bundled host-specific hooks unless listed above |
| Claude Desktop | MCP tools; plain Chat does not expose Claude Code-style ambient hooks |
~/.iai-mcp/; back them up together.claude -p step and a daily
PyPI version check. Set IAI_MCP_VERSION_CHECK=0 to disable the check.raw:<lang> tag and a multilingual or custom embedder.Health and updates:
iai-mcp doctor # 38 checks
iai-mcp daemon status
iai-mcp self-update
IAI — Independent Autistic Intelligence describes the memory design.
“Personal memory engine” describes the scope: one person's memory, on one machine, used by the assistant they already have.
docs/REFERENCE.md — technical and operational referenceBENCHMARKS.md — methodology and reproduce commandsdocs/EMBEDDERS.md — providers, languages, and migrationsCHANGELOG.md — release historyCONTRIBUTING.md — development and test setupSECURITY.md — private vulnerability reportingIssues and pull requests are welcome. Changes to retrieval, capture, contradiction handling, or consolidation should include relevant benchmark reruns.
By Areg Aramovich Noya and Lilli Noya, in collaboration with the team at lcgc.dev.
Python
86.7%
Rust
10.6%
Shell
1.3%
A cyber brain for your AI. It never forgets a detail, remembers exactly what you said, and learns how you work over time. Free, local, works with Cursor, Claude Code, Codex, OpenClaw, Hermes and more. MIT.
Python
890
256 commits
updated Sep 16, 2026
English | 中文
Keeps every conversation word-for-word and gives your AI agent the right
context on every turn.
Quick start · How it works · Benchmarks · Compatibility · Technical reference
A local server that speaks the MCP protocol and gives Claude, and any other MCP-compatible agent, a long-term memory. It captures every turn of every session verbatim, organizes those captures over time into a personal map of who you are, and serves a small slice of relevant memory back at the start of each new conversation and turn. You never have to say "remember this" or "what did we say last time?".
I built this for myself. It worked. The benchmarks were mostly for my own curiosity.
Under the hood it's not a wrapper around someone else's vector store and graph library — the parts that matter are my own code: the storage engine, the community-detection algorithm, the hyperdimensional memory substrate, and a native engine that makes it fast.
And unlike cloud memory services, there's no API key, no account, and no telemetry: the engine, the store, and the embeddings all run locally. The only things that leave your machine are the normal model calls your CLI already makes, plus one optional nightly consolidation step that asks your model for a single insight through the same subscription your CLI already uses.
python3.12 -m pip install -U iai-pme
Then run inside Claude Code:
/plugin marketplace add CodeAbra/iai-personal-memory-engine
/plugin install iai-memory@iai-pme
Restart the session, then verify:
iai --version
iai-mcp daemon status
iai-mcp doctor
Python 3.11 is also supported.
curl -fsSL https://raw.githubusercontent.com/CodeAbra/iai-personal-memory-engine/main/scripts/bootstrap.sh | bash
This builds the Rust engine and TypeScript wrapper, installs the background service and hooks, registers Claude Code, and runs the health check. It requires Git, Python 3.11/3.12, Node.js 18+, and Rust. To inspect the steps without changing anything:
curl -fsSL https://raw.githubusercontent.com/CodeAbra/iai-personal-memory-engine/main/scripts/bootstrap.sh | bash -s -- --dry-run
python3.12 -m pip install -U iai-pme
iai-mcp crypto init
iai-mcp daemon install
iai-mcp capture-hooks install --target codex
Replace codex with cursor, antigravity, hermes, openclaw, or all.
MCP tools work with any MCP-over-stdio client; automatic capture and context
injection depend on the hooks exposed by the host. See the
technical reference.
New stores use the native engine format by default; an existing store keeps its
current format on upgrade. To move an existing legacy SQLite store onto the
native engine, run iai-mcp migrate-to-lilli — iai-mcp doctor prints the exact
command, and the technical reference documents the full flow.
| Event | Action |
|---|---|
| Prompt | New turns are appended to a session buffer as file IO; no embedding or engine RPC is needed on the capture path |
| Session end | Remaining transcript content is rolled over for ingestion; hook failures do not block the host |
| Session start | A bounded memory prefix is exposed as host context; an empty store or unavailable engine yields empty output |
| Later turns | Supported hosts receive a small foresight or delta pack with age and revision markers |
| Idle time | Captures are embedded, deduplicated, encrypted, inserted, clustered, consolidated, reinforced, and decayed |
The background process is called the daemon in the CLI. The MCP wrapper and
iai can still read the local store directly when it is asleep or temporarily
unavailable.
| Tier | Contains |
|---|---|
| Episodic | Timestamped, write-once fragments of what was said |
| Semantic | Summaries induced from related episodes during idle consolidation |
| Procedural | Ten bounded behavioural parameters learned over time |
Distinct hyperdimensional representations keep literal detail, semantic structure, and behavioural tendencies from collapsing into one vector surface.
The local, LLM-free recall path combines semantic similarity, graph evidence,
recency, temporal validity, and lexical evidence. memory_recall returns both
hits and anti_hits; memory_contradict closes the old record's validity
interval, creates a new record, and links the two.
While idle, the engine groups related episodes, induces semantic memory,
reinforces useful paths, and decays weak unreviewed edges. One optional REM step
may invoke claude -p through the user's existing Claude subscription, capped
at no more than 1% of the daily quota. No Anthropic API key is required.
| Component | Role |
|---|---|
| Hippo | Encrypted records, vector index, and graph in one local store |
| MOSAIC | Leiden-family community detection with stable community identity |
| Lilli HD | Hyperdimensional substrate and structural recall |
| Native engine | Rust embedder and graph kernels |
iai brain
The local dashboard searches the store, exposes graph neighbourhoods and contradictions, pins or fades memories, ingests files, controls the background engine, and reports token-use estimates from your own store.
iai recall · temporal-recall · search · ask · capture · teach · upload
iai watch · brain · status · last
iai upload accepts documents, Office files, e-books, source code,
configuration files, and directories. Full formats and administrative commands
are listed in docs/REFERENCE.md.
Every harness ships in bench/; methodology and reproduce commands are in
BENCHMARKS.md.
| Benchmark | Result |
|---|---|
| Rescue@10 after contradiction | 1.000 |
| Historical-verbatim hit@10 | 1.000 |
| LongMemEval-S R@5, product embedder | 0.962 |
| LongMemEval-S R@10, product embedder | 0.978 |
Historical-verbatim retrieval uses a flat-cosine baseline of about 0.71. With
the matched all-MiniLM-L6-v2 embedder, iai-memory and mempalace v3.3.6 both
score R@5 0.966 and R@10 0.978; no win is claimed.
On the author's store, an automatically injected memory pack averaged about
350 tokens versus about 2,850 tokens for the agent-search round trip it
replaced: approximately 88% cheaper on that measured workload. This does not
apply to explicit memory_recall, whose default response budget is 1,500
tokens.
memory_recall memory_temporal_recall
memory_recall_structural memory_search
memory_capture memory_contradict
memory_reinforce memory_consolidate
profile_get_set topology
schema_list events_query
episodes_recent curiosity_pending
Fourteen tools cover cue, temporal, structural, and lexical recall; capture and correction; reinforcement and consolidation; behavioural-profile control; and store introspection.
| Host | Ambient behaviour |
|---|---|
| Claude Code | Session-start recall, per-turn updates, turn capture, and session capture |
| Codex CLI | Full integration through Codex hooks |
| Cursor | Session-start recall and capture; no per-turn text injection |
| Antigravity | Recall per invocation and lossless transcript capture |
| Hermes 0.5.0+ | Recall before model calls and capture from its message store |
| OpenClaw | MCP tools on request; no ambient shell hooks |
| Gemini CLI and other MCP hosts | MCP tools; no bundled host-specific hooks unless listed above |
| Claude Desktop | MCP tools; plain Chat does not expose Claude Code-style ambient hooks |
~/.iai-mcp/; back them up together.claude -p step and a daily
PyPI version check. Set IAI_MCP_VERSION_CHECK=0 to disable the check.raw:<lang> tag and a multilingual or custom embedder.Health and updates:
iai-mcp doctor # 38 checks
iai-mcp daemon status
iai-mcp self-update
IAI — Independent Autistic Intelligence describes the memory design.
“Personal memory engine” describes the scope: one person's memory, on one machine, used by the assistant they already have.
docs/REFERENCE.md — technical and operational referenceBENCHMARKS.md — methodology and reproduce commandsdocs/EMBEDDERS.md — providers, languages, and migrationsCHANGELOG.md — release historyCONTRIBUTING.md — development and test setupSECURITY.md — private vulnerability reportingIssues and pull requests are welcome. Changes to retrieval, capture, contradiction handling, or consolidation should include relevant benchmark reruns.
By Areg Aramovich Noya and Lilli Noya, in collaboration with the team at lcgc.dev.
Python
86.7%
Rust
10.6%
Shell
1.3%