Relay

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.