Memory

Tenant-scoped writes, PII quarantine, deduplication, conflict handling, and semantic retrieval.

The memory service turns conversation turns into durable, tenant-scoped records and retrieves them with pgvector. The substrate is locally implemented. The typed lifecycle and deletion certification are not accepted.

Implemented Ledger class: shipped-local
Verified 2026-10-21Local substrate; typed lifecycle remains open

Pages

  • Overview — HTTP surface, storage model, and claim boundary.
  • Write path — validation, PII, dedup, conflict, labels, and idempotency.
  • Search and lifecycle — semantic retrieval, hot cache, feedback, and the provisional forget flow.

What is durable

ConcernImplementationEvidence status
StoragePostgreSQL with pgvectorIMPLEMENTED
Tenant scopeExplicit org_id / agent_id plus RLS transaction contextIMPLEMENTED; full-store proof open
PIIPresidio detect/redact with typed placeholders and quarantineIMPLEMENTED locally
Exact dedupSHA-256 of normalized post-PII content; active-row unique indexIMPLEMENTED
Near dedupVector similarity above configured thresholdIMPLEMENTED; threshold is not a quality guarantee
Conflict candidatesInterval-overlap-first plus optional classifierIMPLEMENTED locally
Labels1–5 labels with per-label confidenceIMPLEMENTED
Idempotent writesPostgreSQL idempotency_ledgerIMPLEMENTED; fail-closed when required
Forget/tombstoneRevision-fenced provisional routePROVISIONAL

Rules

  • Every read and write is scoped to one organization and agent.
  • Cross-tenant identifiers do not become existence oracles.
  • Duplicate content bumps retrieval metadata rather than creating a second active row.
  • A quarantined memory is not returned as ordinary active memory.
  • X-Idempotency-Key writes fail closed when PostgreSQL is unavailable.
  • Memory content is untrusted input, never instructions.

The service never logs raw memory content by default. Use IDs and metadata when debugging.