SkillAgentSearch skills...

Compartment

Encrypted, fully offline agentic memory. One click install, GUI w/ memory map, all OS and agents. Superior memory creation, storage and retrieval.

Install / Use

claude mcp add MaxFreedomPollard -- npx -y github:MaxFreedomPollard/Compartment

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Supported Platforms

Claude Code
Claude Desktop
Gemini CLI

Our assessment of Compartment

Compartment scores 83/100 on our quality scale, 481st of 598 Data & Analytics skills we index.

Its MCP Server is 43 KB long, well organised into 28 sections with 14 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.

It has 570 GitHub stars, a meaningful sign that others use it.

Substance
21/30
Structure
20/20
Description
15/15
Adoption
12/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 17 days ago, so Compartment is actively maintained.
  • Our last check on 2026-10-18 found the source still online.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

Compartment compared with similar skills

All 4 of these similar skills score higher than Compartment; compare them before choosing.

SkillScoreStarsUpdatedFormat
Compartment (this skill)by MaxFreedomPollard8357017d agoMCP Server
Agent-Reachby Panniantong100109.8k1d agoCLAUDE.md
headroomby headroomlabs-ai10079.1ktodayCLAUDE.md
CowAgentby zhayujie10047.8ktodayCLAUDE.md
Scraplingby D4Vinci10099.1k2d agoMCP Server

Frequently asked questions

How do I install Compartment?
Run claude mcp add MaxFreedomPollard -- npx -y github:MaxFreedomPollard/Compartment. The install tabs above show the steps for each supported agent.
Which AI agents does Compartment work with?
It is written for Claude Code, Claude Desktop and Gemini CLI, as a MCP Server file. Other agents that read the same format can often use it too.
Is Compartment safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is Compartment still maintained?
The repository was last updated 17 days ago, so Compartment is actively maintained.

Compartment

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.

PyPI Downloads CI License

MCP Toplist Cursor Directory Glama MCP Market mcpservers.org LobeHub

One-click install (after pip install compartment && compartment init):

<p> <a href="https://cursor.com/install-mcp?name=compartment&config=eyJjb21tYW5kIjoiY29tcGFydG1lbnQiLCJhcmdzIjpbIi0tY2FsbGVyIiwiY3Vyc29yIiwic2VydmUiXX0="><img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Add to Cursor" height="32"></a> <a href="https://vscode.dev/redirect/mcp/install?name=compartment&config=%7B%22command%22%3A%22compartment%22%2C%22args%22%3A%5B%22--caller%22%2C%22vscode%22%2C%22serve%22%5D%7D"><img src="https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white" alt="Install in VS Code" height="32"></a> <a href="https://insiders.vscode.dev/redirect/mcp/install?name=compartment&config=%7B%22command%22%3A%22compartment%22%2C%22args%22%3A%5B%22--caller%22%2C%22vscode%22%2C%22serve%22%5D%7D&quality=insiders"><img src="https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=for-the-badge&logo=visualstudiocode&logoColor=white" alt="Install in VS Code Insiders" height="32"></a> <a href="https://maxfreedompollard.github.io/Compartment/add/lmstudio"><img src="https://files.lmstudio.ai/deeplink/mcp-install-dark.svg" alt="Add to LM Studio" height="32"></a> <a href="https://maxfreedompollard.github.io/Compartment/add/goose"><img src="https://img.shields.io/badge/goose-Install_Extension-1f1f1f?style=for-the-badge" alt="Install in goose" height="32"></a> <a href="https://kiro.dev/launch/mcp/add?name=compartment&config=%7B%22command%22%3A%22compartment%22%2C%22args%22%3A%5B%22--caller%22%2C%22kiro%22%2C%22serve%22%5D%7D"><img src="https://kiro.dev/images/add-to-kiro.svg" alt="Add to Kiro" height="32"></a> </p>

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.

How it compares with other memory servers

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 |

The memory logic

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 carries a recency bonus that fact ranking does not, 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 never changes; what it is relevant to does. Suppose that while working on a project called Northwind you learn that the client wants figures before conclusions. The agent tags the memory northwind. Two years later the same client, now called Harbour, hires you again, and the agent searches with the tag harbour. The memory is still true, but a tag filter cannot find it. So a background pass gives every memory the tags its nearest neighbours in embedding space carry, weighted by similarity: as Harbour memories accumulate near that old one, it picks up the harbour tag. Two more signals run alongside: tags that almost always occur together imply each other, and an existing tag whose phrase appears in a memory's text is attached. The pass writes only tags, never text, dates or embeddings. It only adds tags unless you pass --prune, tags_origin preserves the original tags, and compartment retag --dry-run shows what would change.

A graph as well as a list. memory_link records a relation: subject, predicate, object, optionally tied to a memory and to a validity window. memory_relations answers by entity, by predicate, or as of a date. Compartment stores and matches relations deterministically; the host model decides what to link.

Memories are data, not instructions. Recalled memories are wrapped with a notice that they are stored data. Content from an untrusted source can be marked quarantined, which adds a warning to every recall of it. The host agent must still treat memory as data.

One embedding model per vault. The model's SHA-256 is recorded in the vault and checked on open, so similarity scores stay comparable. To change model, run compartment reindex --re-embed.

No LLM inside. Embeddings run locally with a bundled 384-dimension int8 ONNX model, in one shared process of about 70 MB that every agent on the machine uses. The host model decides what to store and forget; Compartment captures, encrypts and recalls. That split kee

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars570
CategoryData
Updated17d ago
Forks8

Languages

Python

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions