Long-term and shared memory for AI agents
Loom is a self-hosted MCP server and HTTP API that gives AI agents long-term memory they share: a fact one agent saves in a session can be found by the next session, by another agent, or by a person at the dashboard. This page shows how that works and where to start.
What you get
- One claim per key, in a namespace.
memory.setsaves a fact;memory.getreads it back by key;memory.searchandloom_searchfind it by meaning. A namespace is the unit of sharing: by default, every member reads every row in it. Memory - Memory that can be corrected. A change makes a new version with its history. The same fact after canonicalisation merges into the stored row, the same fact in other words is stored as a duplicate, a contradiction is flagged for review, and a write against a pinned fact is refused. Conflicts and refusal · History and provenance
- Search that abstains. When nothing clears the similarity floor,
memory.searchanswersabstain=truewith a reason code and labels each weak hitbelow_threshold;loom_searchdrops them. Search and ask - Long-term memory for your coding agent, shared across agents. The Claude Code and Codex plugins load relevant context at session start and capture the session as it runs. Cursor, GitHub Copilot, Gemini CLI, Cline, Kilo Code, OpenCode, goose, Zed and other MCP clients connect to the same server, and an agent on a namespace finds the facts other agents saved there. Connect a coding agent · MCP clients
- Per-user memory for your own agent. The Python and TypeScript SDKs write and read memory per end user. Your first agent
Measured
On 100 paired LongMemEval-S questions with the same gpt-5 reader, answers from Loom's
retrieved memories scored 94% against 90% from the whole history, with 91% fewer reader
prompt tokens (excluding the one-time cost of building the memory); the accuracy
difference is not statistically established.
With and without Loom
Start
Quickstart boots the local stack and saves a first memory over HTTP, Python and MCP. When Loom does not fit covers the cases an in-process memory library serves better.
Some ops on this page are marked experimental on the status page.