Connect what matters.
People, projects, preferences, and decisions, linked together. Retrieve with graph, vector, and keyword signals in one pipeline.
Give your agents the context to pick up where they left off. Open-source memory that connects the dots, across conversations.
pip install prmePowered by PRME. Local-first. Apache 2.0.
81.2% on LoCoMo and 90.6% on LongMemEval-S, from at most 3,996 tokens of memory, graded by a strict judge.See the benchmarksStored with owner, timestamp, and source.
Fits the way
you already build.
BEYOND THE CONTEXT WINDOW
Preferences. Decisions. The reason behind a choice. The useful things get lost when a session ends, so users repeat themselves and agents guess.
pris(m)²emory gives them a place to live. Built on PRME, it turns stored events and relationships into relevant context your agent can carry into what comes next.
Meet the memory engineTwo sessions with the same agent. On Monday the user says they run on PostgreSQL and want short answers. On Thursday they ask for a migration. Without memory, the agent asks which database they use. With Prismemory, the agent recalls both facts from Monday and answers with a short PostgreSQL migration.
THE RIGHT CONTEXT, WITH ITS ROOTS INTACT
PRME keeps the original events, links what they mean, and retrieves the few memories that matter for the next turn.
People, projects, preferences, and decisions, linked together. Retrieve with graph, vector, and keyword signals in one pipeline.
Follow a memory back to its source. Preserve original events, represent explicit corrections, and keep conflicting claims visible.
Start with a local memory pack. Run on your own infrastructure, rebuild derived indexes, and keep control of your data.
A local vision model describes photos and the key frames of a video, and each description becomes a memory with the exact frame and its time as evidence. Values that change, like a whiteboard date crossed out and replaced, stay as separate dated records.
Read RFC-0018SMALL INTEGRATION. LONG MEMORY.
Store what matters. Retrieve what’s relevant. Pass the context to the model you already use.
Start with the Python SDK, expose memory over HTTP, or connect through MCP. No new agent framework required.
Read the quickstartfrom prme import MemoryClient with MemoryClient("./memories") as memory: for text in [ "Alex prefers concise explanations.", "Alex is a backend engineer who writes Go.", "Alex's team ships on Thursdays.", ]: memory.store(text, user_id="alex") context = memory.retrieve( "How should I explain this?", user_id="alex", ) for result in context.results: node = result.node print(f"{result.composite_score:.3f}", node.content) print(" source event", node.evidence_refs[0]) bundle = context.bundle print(bundle.tokens_used, "of", bundle.token_budget, "tokens")0.500 Alex prefers concise explanations. source event 3e167039-2c81-… 0.492 Alex is a backend engineer who writes Go. source event 750d7ef3-a4da-… 0.484 Alex's team ships on Thursdays. source event 7e57b5e0-cc74-… 77 of 4096 tokens
YOUR MEMORY. YOUR WAY.
Start open source today. Help shape what comes next in the cloud.
The complete PRME engine. Embed it in your product and run it where your data lives.
A hosted home for pris(m)²emory is on the way. Join the waitlist to hear when early access opens.
pris(m)²emory is the product and hosted-service direction. PRME, the Portable Relational Memory Engine, is the open-source Python engine underneath it. You can use PRME in your own application today; hosted pris(m)²emory is accepting early-access interest.
PRME combines an event log, a relational graph, vector search, and lexical search. It stores relationships, evidence, and validity windows alongside content, then packs relevant memories into a bounded context for your model. Vector similarity is one retrieval signal.
Yes. PRME is Apache 2.0 licensed and runs locally with DuckDB, USearch, and Tantivy. A PostgreSQL backend is also available. You choose where to store memory and which model providers to use.
PRME offers synchronous and asynchronous Python interfaces, an HTTP API, and an MCP server. Integrations are available for LangChain and LlamaIndex. Your application retrieves memory and passes the resulting context to its model.
PRME keeps every original message, and your application can correct a memory explicitly with supersede(): the old value leaves default retrieval and stays in history. A correction stated inside a conversation is not reliably applied by ingest() yet, and conflicting statements are not flagged. Our public corrections test shows both. Exact historical replay is not supported yet; it is on the PRME roadmap as issue #30, with no release date.
store() does not. It embeds the text on your machine and writes it to the local pack, in about 70 ms per call on a laptop. ingest() also extracts claims with a model you choose: OpenAI gpt-4o-mini by default, Anthropic, or a local model through Ollama, which keeps extraction on your machine. Since v0.15.0, one call covers up to 2,048 tokens of a session’s turns: 275 calls for LoCoMo’s 5,882 turns. See cost and speed.
PRME can, as an opt-in feature new in v0.15.0. observe() and prme observe use a local vision model through Ollama to describe a photo or the key frames of a saved video, then keep each description as a memory with the exact frame and its time as evidence. It is off by default and needs a local pack. This is phase 1 of RFC-0018; it has not yet been benchmarked on real recordings.
The name joins prism and memory, which share their m; the notation marks that shared letter. Say it and type it as “prismemory,” as in prismemory.com. The open-source engine underneath keeps its own name, PRME.
Hosted pris(m)²emory is in early access planning. Join the waitlist for availability updates. Pricing and hosted service details have not been announced. You can start building with the open-source engine now.