Encrypted, fully offline agentic memory. One click install, GUI w/ memory map, all OS and agents. Superior memory creation, storage and retrieval.
# Add to your Claude Code skills
git clone https://github.com/MaxFreedomPollard/CompartmentLast scanned: 8/2/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-02T06:32:39.449Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how Compartment compares with popular alternatives.
Compartment is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by MaxFreedomPollard. Encrypted, fully offline agentic memory. One click install, GUI w/ memory map, all OS and agents. Superior memory creation, storage and retrieval. It has 587 GitHub stars.
Yes. Compartment 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/MaxFreedomPollard/Compartment" and add it to your Claude Code skills directory (see the Installation section above).
Compartment is primarily written in Python. It is open-source under MaxFreedomPollard 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 Compartment 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.
Encrypted, fully offline memory for AI agents. One vault on your own computer, read and written by Claude Code, Claude Desktop, Hermes Agent, OpenClaw, Cursor, Codex and any other MCP client. No API key, no account, no network, no telemetry.
One-click install (after pip install compartment && compartment init):
Claude Code, Claude Desktop, Hermes Agent and OpenClaw are wired by one
command instead: compartment integrate claude, hermes or openclaw.
Compartment is persistent memory for AI agents, stored on your own computer. What an agent learns in one session is available in every later session, in every project, to every agent on the machine, and nothing leaves the machine.
Each memory is a single claim, recorded with its source and the date it was
learned. Memories can expire: set expires and the memory is removed after
that date. When a preference changes, the new one replaces the old one.
Recall is a hybrid vector and keyword search over an in-memory index. It
answers in about 12 ms and returns only what is relevant.
The embedding model is included in the package. Everything on disk is encrypted, including the embedding vectors, and only your passphrase opens it. A new vault comes with about 6,700 reference facts about hardware, operating systems, ports, encodings and shell tools. They are ordinary memories, and one switch removes them from search.
Where each server keeps memory and what protects it, as documented by each project on 2 September 2026. Sources and the full table are in docs/COMPARISON.md; corrections are welcome as a PR against that file.
| Memory at rest | Encrypted | Account / API key | Network at runtime | |
|---|---|---|---|---|
| Compartment | one encrypted file; index in RAM | yes, vectors too | none | none, CI-enforced |
@modelcontextprotocol/server-memory |
plaintext memory.jsonl, substring search |
no | none | none |
| mem0 (open source) | vector store + LLM-extracted facts; its MCP server is hosted only | not documented | LLM key | LLM calls; telemetry on by default |
| Graphiti (Zep) / Letta | Neo4j / server + database | not documented | LLM key | LLM calls; telemetry on by default |
| claude-mem | local SQLite + Chroma | not documented | sign-in required | account + provider calls; telemetry on by default |
| basic-memory (AGPL) | Markdown + SQLite | not documented | none | telemetry on by default |
| Hindsight (Vectorize) | one container with embedded PostgreSQL | not documented | LLM key (local models configurable) | LLM calls; vendor states no telemetry |
| Supermemory | cloud service, or a self-hosted prebuilt binary | not documented | account (cloud) or LLM key (self-host) | cloud calls; self-host: vendor states no telemetry |
| Cognee | SQLite + LanceDB + Kuzu locally, or cloud | not documented | LLM key | LLM calls; telemetry on by default |
| MemOS | Neo4j + Qdrant self-hosted, or cloud | not documented | LLM key | LLM calls; telemetry on by default |
Almost everything is stored. Only empty turns are dropped. A bare "OK" is a decision, not noise: when the agent asks "Want me to send this reply to the client now?" and the user answers "OK", Compartment stores the decision together with the question it answered. Small talk is kept but ranked last.
Importance is assigned by fixed tiers. Decisions and consent 0.90, personal facts and preferences 0.80, the user's machine and configuration 0.75, other substantive statements 0.55, small talk 0.20. Importance multiplies a match score rather than adding to it, so it breaks near-ties in favour of what matters and can never surface a memory that did not match the question.
One claim per memory, enforced. The store rejects anything longer than
200 characters (the max_memory_chars setting), and anything containing
lists, headings or paragraphs, with an error that says how to split it.
Instructions alone did not work: on a real vault, the median memory written
by an agent was 1,938 characters of bulleted session log. memory_store_many
stores a batch in one call. compartment atomize splits over-limit memories
in an existing vault; each piece keeps the original's dates, and the original
is marked superseded but stays readable by id.
Every memory records its source and date. source is required: "from
chat", "read from pyproject.toml", "web search". discovered is the date the
fact was learned, separate from the date it was saved. Both are appended to
the text as a short clause, for example [web search, 2026-08-01].
Memories can expire. For a fact that stops being true on a known date,
such as a sale price, a booking or a door code, set expires to that date
(2026-09-03) or to a duration (14d, 2w, 3m, 1y). The memory is
removed after that date. compartment expire runs the sweep by hand;
expire_memories turns it off. Most facts should not expire; a wrong expiry
deletes a memory the user wanted.
Facts accumulate; opinions update. A new fact is added beside the
others: the door code changed, a script lives at a path, a release shipped.
An opinion replaces one. When a preference is stored with kind="opinion",
the vault looks for a similar live opinion first. If it finds one, it returns
the old record instead of inserting, and the caller resends with
supersedes=[old id] to replace it, or supersedes=[] to keep both.
Restating a live opinion refreshes its date instead of storing a copy.
Superseded records are removed from search but kept in the audit chain and
readable by id, with a pointer to their replacement. supersedes also works
on facts, for corrections. Opinion ranking weights recency much more than
fact ranking, so the newest opinion wins. compartment opinions audit finds
overlapping live opinions in older vaults and keeps the newest, or reports
them for manual merging.
Capture does not depend on the model. A host that declares its own
memory in its system prompt can override any tool instruction. So
integrate claude installs a PostToolUse hook that writes each memory
file Claude Code saves into the vault, whether or not the model calls the
tool. The hook leaves your other hooks untouched, backs up settings.json
first, always exits successfully so it can never break your editor, and does
nothing while the vault is locked. compartment hook status | install | uninstall, or integrate claude --no-hooks. compartment import-claude
imports anything the hook missed.
Search returns what is relevant, not a fixed number. Compartment returns
every memory whose score holds up against the best result for the same
question, up to a generous cap. The cut is relative because scores are not
comparable between questions: on a real vault, the nonsense query "how to
bake sourdough bread" scored higher than the real query "what did Max decide
about Airtable". A question the vault knows nothing about returns nothing.
Pass top_k to get exactly that many.
Tags are kept current. What a memory is about ne