What gets stored
A memory is not a document or a chat log — it’s a short, structured fact plus the tags that make scoping and retrieval work.
The shape of a memory
The fact itself
A short, one- or two-sentence statement of the decision or context — embedded into a vector store so it can be found by meaning later.
Author
Who recorded it (a stable handle), so attribution survives even if a display name changes.
Area
A short label for the context area — e.g. product, sales, tech, or a project/client name. Used as a soft ranking boost.
Audience
Who the memory is for: all, dev, or commercial. This is what role scoping enforces on read.
Tenant
Your organization id. Every memory is stamped with it and is fail-closed: a memory without an exact tenant match is never returned.
Optional expiry
A valid_until date for time-sensitive facts, so stale context drops out automatically.
The fact itself is embedded into a vector store (powered by mem0), which is what lets retrieval find it later by meaning rather than exact words. This is identical on Claude Code and Claude.ai — a memory saved on one is stored and retrievable on the other.