Recall that outlives the session

Memory Preview

A persona memory substrate with real semantic recall runs in production today. Wiring it into sessions and team runs is the work in flight.

What is running

The storage and recall layer is live in production: core memory blocks that are always in the prompt, plus an archival tier of memories, facts and links. Recall is genuine semantic k-nearest-neighbour search — Gemini embeddings in a 1536-dimension vector column with an HNSW cosine index and strict-order iterative scan — not a keyword match wearing a vector costume.

The storage layer is the product

A team that forgets everything between runs relearns your codebase every morning, so this is not a scratch file with a search box bolted on — it is the Hub's own storage layer doing what it was built for. Postgres with pgvector, in a dedicated schema, with row-level security drawing the tenant boundary inside the database engine rather than in application code that can be forgotten on one route. Worth being plain about: this is the one topic here whose subject is not the tool. The substrate is the Hub's, it runs whether or not you ever install a team, and the tool is the consumer that has not been wired to it yet — which is the whole of what the preview marker means.

What that buys

  • Three tiers, not one bucket: core blocks always in the prompt, a structured knowledge base fetched on demand, and an archival tier reached by semantic search.
  • Typed edges between memories — relates_to, contradicts, depends_on — so a contradiction is a first-class relationship, not something a model has to notice.
  • Facts as subject–predicate–object triples, each carrying its own source and a confidence score, so where a belief came from travels with it.
  • Two scoping axes enforced by a database constraint: a memory is either yours or the persona's, and a read can never quietly cross that line.
  • The embedding model is a column, so changing providers is a re-embed rather than a migration.

What is in flight

The part that automatically injects memory into a Claude Code session or a team run does not exist yet. Neither does the atomic supersede write, though its columns are in place and recall already filters to active records. Point-in-time queries are stored-but-not-queryable by design — the columns are there, the temporal query logic lands when it is needed.

The problem being solved

Three failure modes drive the design: recall that is not deterministic enough to rely on, curation that collapses under its own volume, and stale facts served with full confidence long after they stopped being true. Supersession with validity ranges addresses the third directly — a memory is not deleted when it stops being true, it is closed out and replaced, so the history of what was believed remains legible. The evidence behind those three is under Research.