obliviate

obliviate

An MCP server for agent memory that enables remembering, recalling, and provably forgetting knowledge with cascade deletion, cryptographic shredding, and signed erasure certificates.

Category
Visit Server

README

<div align="center">

<img src="docs/media/logo.png" width="140" alt="Obliviate logo">

Obliviate

Agent memory that forgets on command — and proves it's gone.

Delete it everywhere · in one atomic transaction · with a signed receipt anyone can check

▶ Try the live demo

Live demo CockroachDB Basic Cloud MCP AWS S3 WORM Python 3.12 FastAPI License MIT

</div>

When an agent's memory is wrong, poisoned, or legally required to disappear — can you delete it everywhere, atomically, and prove it's gone?

Obliviate can. It cascade-deletes an entity's entire knowledge sub-graph — documents, graph nodes, edges, and vectors — in one ACID transaction, then proves erasure three ways: an AS OF SYSTEM TIME before/after diff, a live vector + graph re-search that returns nothing, and a crypto-shredded, object-locked deletion certificate.

Browsing, recall, the knowledge graph, and /verify are open to everyone. Writes are token-gated (an erasure product should never let anonymous visitors delete data) — to run Forget & Prove yourself, paste the demo token obliviate-judge-75a0f127 in Settings → Security.

<div align="center">

<br>

Obliviate landing

<br>

Living memory — the knowledge graph with real-time physics (47 entities · 83 relationships, all in CockroachDB):

Obliviate knowledge graph — live physics

</div>


The problem

Every agentic-memory project this cycle answers the same question: how do agents remember more? Almost none answer the question that governed, production memory actually demands: how do agents forget — completely, safely, and provably?

Memory that only ever accumulates is a liability. A poisoned or wrong fact propagates through the knowledge graph and corrupts future reasoning. A departed customer's data lingers past its legal retention window (EU GDPR Article 17 "right to erasure" is a 2026 enforcement priority). And in most systems, "delete" is a best-effort DELETE that leaves recoverable vectors on disk, orphaned graph edges, and no proof anything happened.

What Obliviate does

Point it at an entity — a customer, a decommissioned system, a poisoned memory — and it performs verifiable erasure:

Stage Guarantee
Cascade delete The entity's documents, graph nodes, edges, and vectors are removed in one serializable transaction — never a half-erased state.
Shared-node safety Entities shared with a surviving subject are invalidated, not deleted — erasing one subject never corrupts another's memory.
Crypto-shred The subject's per-record encryption key is destroyed, so residual ciphertext (in MVCC history, backups, or S3) is cryptographically unrecoverable — not merely dereferenced.
Proof of prior existence AS OF SYSTEM TIME reconstructs exactly what the graph knew before erasure — the database's own memory of itself, no separate audit log.
Proof of absence A live vector + graph re-search returns nothing; the agent answers "not on record."
Certificate A signed, object-locked (WORM) S3 certificate makes each erasure tamper-evident.

Two applications of the same primitive:

  • Data-integrity / incident response — a poisoned or wrong fact entered your agent's memory. Cut it out cleanly, cluster-wide, and prove the graph is clean again.
  • Compliance — GDPR/HIPAA right-to-erasure with a certificate you can hand an auditor.

Grounded recall — with sources, and honest about absence

Ask in plain English. Answers are grounded strictly in the stored graph, cite their sources, and decline honestly when a fact isn't on record — the exact behavior that makes forgetting provable.

Obliviate chat — grounded answer with sources

Forget & Prove — the hero

One click erases a subject in a single ACID transaction, then proves it three ways — it existed (AS OF SYSTEM TIME), it's gone (live vector + graph re-check), it's irreversible (crypto-shred + object-locked S3 certificate). Entities shared with a surviving subject are kept, not deleted (note the 1 shared kept).

Forget  Prove — the live 3-part proof of erasure

It produces a signed, object-locked Certificate of Erasure — and anyone can independently re-check it at /verify: the page re-derives the SHA-256 content hash and checks the ECDSA (P-256) signature (public key shown, so it verifies offline). A tampered field breaks the hash; a forged certificate fails the signature.

Certificate of Erasure Independent verifier (/verify)
<img src="docs/screenshots/07-certificate.png" width="380" alt="Certificate of Erasure"> <img src="docs/screenshots/09-verify.png" width="380" alt="Certificate verifier">

Don't take our word for it — here's the evidence, outside the app:

The certificate object in the AWS S3 console: Object Lock retention — Compliance mode (WORM: not even the account root can delete or overwrite it before expiry):

S3 Object Lock — Compliance mode on an erasure certificate

And an independent audit — direct SQL on the CockroachDB cluster (no application in the loop) for a previously forgotten subject: 0 nodes · 0 documents · data key destroyed:

Independent audit — direct SQL, zero rows for the forgotten subject

The same check through CockroachDB Cloud's Managed MCP server — an auditor queries the cluster directly (not our app) and gets 0 rows for the forgotten subject:

Managed MCP audit — 0 rows for the forgotten subject

The knowledge graph (47 entities · 83 relationships, live physics) and the in-app docs:

Knowledge graph Docs (/learn)
Knowledge graph Docs

Why CockroachDB (load-bearing, not a checkbox)

Obliviate unifies what normally takes three systems — a graph database, a vector store, and an audit log — into one durable, governed store. That is only possible because of CockroachDB primitives:

  • Distributed Vector Indexing (C-SPANN) — semantic recall over VECTOR(384) columns, index-backed (verified via EXPLAIN), living in the same table as the relational data.
  • AS OF SYSTEM TIME — MVCC time-travel is the deletion receipt. No bolt-on history table to trust.
  • Serializable transactions — the cascade delete + invalidate + crypto-shred either all commit or none do.
  • Recursive CTEs — exhaustive, by-construction blast-radius traversal of the knowledge graph.
  • Row-level TTL — retention enforced by the storage engine. Opt-in per row (ttl_expire_at): documents expire only when a retention policy sets it, so nothing is deleted by a blanket clock.
  • Managed MCP Server (independent verification) — Obliviate wires CockroachDB Cloud's own managed MCP endpoint (cockroachlabs.cloud/mcp). This is the strongest form of the erasure claim: an auditor doesn't have to trust our API when it says "it's gone" — they point their own MCP agent at Cockroach Labs' hosted endpoint and select_query the cluster directly to confirm the forgotten subject's rows are truly absent. Proof that never routes through Obliviate's code. See docs/MCP.md.
  • MCP-native (our own tools) — Obliviate also ships its own MCP server (FastMCP) backed by the same cluster, so any MCP agent (Claude Desktop/Code, Cursor) can remember, recall, and provably forget through high-level tools.

CockroachDB tools used (load-bearing): CockroachDB Cloud Managed MCP Server · Distributed Vector Indexing (C-SPANN) · AS OF SYSTEM TIME · Serializable transactions · Recursive CTEs · Row-level TTL. AWS services used: S3 (object-locked / WORM erasure certificates) · EC2 (hosting). Certificates are signed in-process with ECDSA (P-256); a Lambda-based signer is an optional deployment variant, not required.

Architecture

flowchart TB
    U["User / Agent"] -->|HTTPS| API["FastAPI app"]
    MCP["Obliviate MCP server (FastMCP)"] -->|"remember · recall · forget (via core)"| CRDB
    API -->|"vectors · AS OF SYSTEM TIME · cascade · CTEs"| CRDB
    subgraph CRDB["CockroachDB (one transactional store)"]
      D["documents (encrypted)"]
      N["nodes + VECTOR index"]
      E["edges (graph)"]
      K["subject_keys (crypto-shred)"]
      EV["erasure_events (audit)"]
    end
    API -->|"sign (ECDSA P-256) + PUT (Object Lock / WORM)"| S3["Amazon S3 — erasure certificates"]
    API -->|"embeddings"| FE["fastembed (local, 384-d)"]
    API -->|"generation"| LLM["LLM — local (Ollama) or hosted, BYO-model"]

How it works

  • Ingest — a document is stored encrypted under its subject's key; an LLM extracts entities and relationships; nodes are upserted by name (INSERT … ON CONFLICT = deterministic coreference dedup) and edges inserted — all in the one store.
  • Ask — cosine ANN finds the relevant entities, a recursive CTE expands the surrounding graph, and a strictly-grounded prompt answers only from that context, declining honestly when a fact is absent (the property that makes forgetting provable).
  • Forget — the transaction described above.

Quickstart

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env          # set DATABASE_URL, LLM provider, AWS
python scripts/init_db.py     # apply schema + self-test
uvicorn app.main:app --port 8080

Bring your own model. The LLM layer is provider-agnostic — point it at a local Ollama model or any hosted OpenAI-compatible provider by editing .env (or from the in-app model picker). No provider lock-in.

Evaluation

Obliviate implements research-backed layered deletion rather than naive DELETE:

  • Naive deletion is only ~18% robust to reconstruction attacks; dependency-graph-aware layered deletion reaches ~94% (ForgetAgent, IJRASET).
  • API-confirmed vector deletion leaves embeddings physically recoverable from the raw index on disk — Ghost Vectors (arXiv:2606.18497) reconstructs 25.5% of exact names and 46.4% of locations from text embeddings (and up to ~99% from image embeddings); crypto-shredding a per-subject key drops recovery to 0% (the paper's own "Epoch Key Rotation" fix — encrypt, then discard the key).

The eval harness (evals/) reproduces a forget-correctness benchmark (blind-judge scored) and a Reconstruction-Robustness Score comparing naive deletion vs. Obliviate.

Built for this hackathon

Obliviate's CockroachDB-native memory engine was built new for this hackathon — the knowledge graph as relational tables, vectors in the C-SPANN index, the atomic transactional forget, the AS OF SYSTEM TIME proof, the per-subject crypto-shred, and the signed erasure certificate. Unifying the graph, the vectors, and the audit trail into one CockroachDB store is precisely what makes forgetting a single ACID transaction and the certificate provable from the database itself — something impossible when the graph and vectors live in two separate stores. That single-store design is the structural core: a single ACID cascade, AS OF SYSTEM TIME as the proof mechanism, object-locked crypto-shred certificates, and an exhaustive recursive-CTE blast-radius.

Honest limitations

  • Erasure removes data from the store; it does not unlearn an LLM's parametric priors (which is why the grounding prompt is strict and honesty is verified behaviorally).
  • Coreference is name-based; entities that should be distinct can merge and vice-versa.
  • The AS OF SYSTEM TIME window is bounded by the cluster GC window; the append-only audit trail and S3 certificate provide durability beyond it.

License

MIT © 2026 Vinayak Sonthalia

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured