Connect what matters.
People, projects, preferences, and decisions, linked together. Retrieve with graph, vector, and keyword signals in one pipeline.
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.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. 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.
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 comparisonsStore 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.
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")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
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.
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.
Encrypt the memory pack on disk with your own key. Nenavi Cloud encrypts its database storage and serves only HTTPS.
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.
PRME listens only on your machine by default, and its server won’t open a network port without keys.
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.
Early access is by invitation. Join the waitlist to request one.
In Kannada, “nenavi” (ನೆನವಿ) means “reminder”: a word for something tied to memory and recollection. That is the job Nenavi does for your agent.
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.
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, 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 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.
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.
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.