Clean, value-ranked recall
Retrieval ordered by earned value, not just recency or cosine. A write-admission gate (admit) rejects junk and near-duplicates before they bloat the store, and why_recalled shows exactly why a memory surfaced.
v1.26.0 · MIT · zero dependencies
The self-correcting memory layer for AI agents — zero dependencies, with an MCP server. Value-ranked recall, consolidation, and a first-class correction and erasure channel — measured, not assumed.
01 — correction
When db::region changes from us-east to eu-west, the
stale block dims and slides to a retired side-rail — still auditable, no longer asserted. Recall
returns the current value; the chain remembers that it ever changed.
02 — the attack
A revert is an authority action, not a sentence an attacker can type. An unsigned content-path
request to resurrect a retired value shatters against
authorization_required. This is the whole thesis: the value channel
cannot mint a reversion.
03 — erasure
A forget_subject seals the block into a cryptographic ghost. Then the
ErasureAuditor sweeps the surrounding vector-cloud, checking whether the erased
content is still reconstructible from what's left. Erasure you can actually verify.
the correction channel
measured, not assumed
Does a correction stick after the value is contested? One open, adversarial cut — revert success over 20 trials, with 95% Wilson intervals.
Honest scope: this is a narrow adversarial cut, not a general memory-quality score. On the separate echo-resurrection cell all three systems tie. Run it yourself — the harness is open.
the surface
Retrieval ordered by earned value, not just recency or cosine. A write-admission gate (admit) rejects junk and near-duplicates before they bloat the store, and why_recalled shows exactly why a memory surfaced.
A first-class channel: revert, retract_lineage, echo_guard, forget_subject. And a read-path review trigger — observe() reopens a settled fact on a corroborated contradiction, recall marks it under_review so the agent can hedge, and a steward resolves it. Bitemporal as_of reconstructs what the agent believed at any moment.
Every write is hash-chained. verify_writes and anchor catch a history rewrite by a key-holder.
Corroboration-gated influence with recall(influence_only=True) so one laundered write can't dominate the answer. credit_requires_warrant closes the self-graded loop (a memory can't vouch for itself), and grounds can be Ed25519-signed so forged corroboration counts zero.
DeletionManifest plus ErasureAuditor: an adversarial check that erased content isn't reconstructible across the fan-out — including the soft-delete residue a 200 OK leaves in Qdrant, pgvector, and S3.
Drop-in for OpenAI Agents, AutoGen, LangGraph, LlamaIndex, Google ADK, and Pydantic AI. Fail-closed tenant isolation with a PII floor scopes every cross-record operation.
model context protocol
Point Claude, Cursor, or any MCP agent at inspeximus and it gets a real memory with a correction channel — no glue code.
claude mcp add inspeximus -e INSPEXIMUS_PATH=~/.inspeximus_memory.json -- uvx --from "inspeximus[mcp]" inspeximus-mcp
{
"mcpServers": {
"inspeximus": {
"command": "uvx",
"args": ["--from", "inspeximus[mcp]", "inspeximus-mcp"]
}
}
}
governance
An RFC 6962 signed tree head over the write log. anchor() plus verify_consistency() catches a key-holder who rewrites history.
forget_subject is bound to an Ed25519 principal with a decision basis, and compliance_receipt() emits a signed, verifiable proof-of-erasure — the artifact a DPO hands a regulator under GDPR Art. 17.
The ErasureAuditor asks the adversarial question: after deletion, is the content still reconstructible? It catches the soft-delete residue a 200 OK leaves behind — Qdrant points under the optimizer threshold, pgvector dead tuples, an S3 delete-marker over a live version.
Store encrypted at rest with opt-in AES-256-GCM (standard crypto, key never persisted), so shred() destroys the key and makes the store — and every backup of it — provably unrecoverable. NIST SP 800-88 cryptographic-erase, beside the tombstone and reconstruction proofs.
Honest scope: inspeximus has no RCE or ReDoS surface (JSON-only, no pickle/eval/subprocess) and uses constant-time HMAC, with two documented residuals in SECURITY.md.