pris(m)²emory / Memory for AI PRME v0.15.0 is open source
◇ A LONGER MEMORY. A BETTER AGENT.

Good AI
remembers.

Give your agents the context to pick up where they left off. Open-source memory that connects the dots, across conversations.

pip install prme

Powered 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 benchmarks
pris(m)²emoryInteractive example
WORKSPACE / ASTERowner: alex
A A conversation worth remembering
“We’re building Aster with Python and PostgreSQL. Keep your explanations concise.”
Source preserved
↳
Original event

Stored with owner, timestamp, and source.

✓
Aster uses PythonAster uses PostgreSQLAlex prefers concise explanations
Sample data
FROM CONVERSATION TO CONTEXTPick a step to explore

Fits the way
you already build.

Python SDKHTTP APIMCP READYDuckDBPostgreSQL

BEYOND THE CONTEXT WINDOW

Your next conversation
shouldn’t start from zero.

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 engine

Two 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

More than remembering words.

PRME keeps the original events, links what they mean, and retrieves the few memories that matter for the next turn.

What does Alex’s team use?GRAPHVECTORKEYWORDCONTEXT3 MEMORIES
01 · HYBRID RETRIEVAL

Connect what matters.

People, projects, preferences, and decisions, linked together. Retrieve with graph, vector, and keyword signals in one pipeline.

MEMORY GRAPHEVENT LOGMAR 3 · CHATsourceTEAM DATABASEMySQLSUPERSEDED · KEPTJUN 9 · CHATsourceTEAM DATABASEPostgreSQLCURRENTsuperseded by
02 · SOURCE-BACKED MEMORY

Keep the story behind it.

Follow a memory back to its source. Preserve original events, represent explicit corrections, and keep conflicting claims visible.

LAPTOPYOUR SERVERmy_memories/$ prme rebuildmemory.duckdbevents + graphDURABLEvectors.usearchvector indexlexical_index/keyword indexmanifest.jsonpack metadata
03 · LOCAL-FIRST BY DESIGN

Take your memory with you.

Start with a local memory pack. Run on your own infrastructure, rebuild derived indexes, and keep control of your data.

00:15LAUNCH3 NOVexact frameLAUNCH DATE · 00:153 Nov01:15LAUNCH3 NOV10 NOVexact frameLAUNCH DATE · 01:1510 Nov
04 · VISUAL MEMORY Opt-in · New in v0.15.0

Remember what you saw.

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-0018

SMALL INTEGRATION. LONG MEMORY.

Your agent.
Now with a past.

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 quickstart
Python 3.11+Sync & asyncModel agnostic
from 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")
Output, PRME v0.15.0
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.

Build here. Run anywhere.

Start open source today. Help shape what comes next in the cloud.

AVAILABLE TODAY

Open source.
Wide open possibilities.

The complete PRME engine. Embed it in your product and run it where your data lives.

  • Apache 2.0 licensed
  • Local DuckDB or PostgreSQL
  • Python, HTTP, and MCP interfaces
  • Portable memory with source provenance
Build with PRME Free to use. Your infrastructure and model costs apply.
HOSTED · COMING NEXT

Focus on your agent.
Leave room for us.

A hosted home for pris(m)²emory is on the way. Join the waitlist to hear when early access opens.

The same open-source foundation.
A managed experience in the making.

Only early-access updates. How we use your email.

A FEW THINGS TO KNOW

Glad you asked.

More questions? Talk to us
What’s the difference between pris(m)²emory and PRME?

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.

How is this different from a vector database?

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.

Can I run it on my own infrastructure?

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.

Does it work with my existing agent?

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.

What happens when information changes?

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.

Does storing memory call a model?

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.

Can pris(m)²emory remember images and video?

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.

Why is it written pris(m)²emory?

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.

Is hosted pris(m)²emory available today?

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.

Build something
worth remembering.