Memory for AI agentsPRME v0.15.0 is open source

Secure-First Memory
for your AI Systems

Nenavi turns conversations into connected, source-backed memory, then gives your agent just the context it needs next.

pip install prmeNenavi, powered by PRME. Open source, local-first, Apache 2.0.
01 · Pick a messageSample data
02 · Stored as four linked memoriesKept as the source
  • EntityTeam database
  • FactRuns PostgreSQL(recalled)
  • EventLeft MySQL in June
  • PreferenceShort answers(recalled)
  • EntityAlex
  • FactWrites Go
  • FactBackend engineer
  • EventShips Thursdays
  • EventLaunch · 3 Nov · superseded
  • EventLaunch · 10 Nov · current
  • PreferencePlans by email
  • EntityLaunch plan
03 · Later, the agent asks
“Write a migration for the users table.”
“When can Alex ship this fix?”
“Remind me when we launch.”
Waiting for the question2 of 4 memories recalled2 / 4 in context
Only the memories that matter come back.
Fits the way you already buildPython SDKHTTP APIMCP readyDuckDBPostgreSQLLangChainLlamaIndex
Beyond the context window

Your next conversation shouldn’t start from zero.

Preferences, decisions, the reason behind a choice: they vanish when a session ends, so users repeat themselves and agents guess. Nenavi keeps them, with their sources, for every conversation that follows.

Without memoryEvery session starts from zero.
Monday · Session 1
We run on PostgreSQL. Keep answers short.
Got it. Short answers, PostgreSQL.
Context window cleared · nothing carried forward
Thursday · Session 2
Add a migration for the users table.
Sure. Which database are you using, and how much detail do you want?
With NenaviEach session builds on the last.
Monday · Session 1
We run on PostgreSQL. Keep answers short.
Got it. Short answers, PostgreSQL.
✓ StoredTeam uses PostgreSQLPrefers short answers
Thursday · Session 2
Add a migration for the users table.
Here’s a short PostgreSQL migration: ALTER TABLE users ADD COLUMN …
2 memories recalled
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.

AlexAster projectShips ThursdaysWrites GoTeam databaseRuns PostgreSQLShort answers“What does Alex’s team use?” · GRAPH · VECTOR · KEYWORD · 3 memories
01 · Hybrid retrieval

Connect what matters.

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

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.

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.

my_memories/memory.duckdb · events + graph · durablevectors.usearch · vector indexlexical_index/ · keyword indexmanifest.json · pack metadata$ prme rebuild
04 · Visual memoryOpt-in · New in v0.15.0

Remember what you saw.

A local vision model describes photos and the key frames of a video. 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.

Event · 00:15Launch date · 3 NovEvent · 01:15Launch date · 10 Nov

Read RFC-0018

Measured in public

Small context. Strong recall.

Two public long-memory benchmarks, graded by a strict judge, with every result file published. Some vendors report higher scores with other judges and context sizes; the benchmarks page shows both.

See the method and comparisons
LoCoMo
81.2%
1,250 of 1,540 questions correct
LongMemEval-S
90.6%
453 of 500 questions correct
Memory per question
≤ 3,996
tokens of context, at most
Small integration. Long memory.

Store. Recall. Answer.

Store what matters. Retrieve what’s relevant. Pass the context to the model you already use, through the Python SDK, HTTP, or 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
Security and privacy

Security built in, not bolted on.

Memory holds the most personal things people tell an agent. PRME protects it before it is stored, while it is stored, and whenever it is read.

Before storageSample data
Incoming
Hi, I’m Dana Reyes. Reach me at dana@northwind.io or 415-555-0137.
✓ Stored
Hi, I’m [PERSON_REMOVED]. Reach me at [EMAIL_REMOVED] or [PHONE_REMOVED].
Incoming
Here’s the token for the deploy: GITHUB_TOKEN=ghp_8fK2…
✗ BlockedNot stored. Credentials are never saved.

Sensitive details removed before storage

Opt-in · PRME 0.16 prerelease

A local sanitizer finds emails, phone numbers, names, card and Social Security numbers, then redacts them before anything is saved or sent to a model. Credentials are always blocked.

Encrypted at rest

Encrypt the memory pack on disk with your own key. Nenavi Cloud encrypts its database storage and serves only HTTPS.

A key for every user

Each user’s key reaches only their own memories; asking for anyone else’s is refused. Hosted keys are stored only as hashes and stop working within a minute of revocation.

Closed until you open it

PRME listens only on your machine by default, and its server won’t open a network port without keys.

Sanitization recognizes common patterns in English text. It lowers the risk but can’t promise to catch every sensitive detail. How it works
Nenavi Cloud · Early access

All of PRME. None of the plumbing.

Nenavi Cloud runs the same open-source engine for you. Create a project, connect your agent over HTTP or MCP, and watch its memory take shape in the console.

  • The same engineOpen-source PRME, operated for you.
  • HTTP and MCPProject API keys for any agent or MCP client.
  • See your memoryBrowse memories and the graph, with sources.
  • Isolated projectsEach project keeps its own memory.

Early access is by invitation. Join the waitlist to request one.

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

Prefer to run it yourself? PRME is Apache 2.0. Self-host it
aster-assistantMemoryAPI keysGet startedSettings
ListGraphdatabase
AlexAster projectShort answersTeam databaseRuns PostgreSQLRan MySQLMigrated in June
Fact · currentTeam runs PostgreSQL
Source Chat, Jun 9Replaces Ran MySQL, kept in historySignals graph · keyword
Console preview · sample data
A few things to know

Glad you asked.

More questions? Talk to us
What does Nenavi mean?

In Kannada, “nenavi” (ನೆನವಿ) means “reminder”: a word for something tied to memory and recollection. That is the job Nenavi does for your agent.

What’s the difference between Nenavi and PRME?

Nenavi is the product and Nenavi Cloud is its hosted service. PRME, the Portable Relational Memory Engine, is the open-source Python engine underneath both. You can use PRME in your own application today; Nenavi Cloud 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, 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 Nenavi 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 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.

What does Nenavi not do yet?

Exact historical replay is on the roadmap with no release date. A correction stated inside a conversation is not reliably applied by ingest() yet. Visual memory has not been benchmarked on real recordings. Pricing for Nenavi Cloud has not been announced.

Is Nenavi Cloud available today?

Nenavi Cloud is in early access, by invitation. Join the waitlist to request an invite. Pricing has not been announced. You can start building with the open-source engine now.

Nenavi means remember

Build something worth remembering.