Building Shared Memory for AI Agents in Notion
All posts←
←All posts
Published August 18, 2026 in Tech<br>Building Shared Memory for AI Agents in Notion<br>By Hesham Salman<br>Engineering, Notion
Share this post
As software engineering changes, tribal knowledge is increasingly concentrated not only in a single person's mind, but in a single agent session. Here at Notion, we kept having to manually extract experiential learnings as skills or documentation and share them with the team in-repo. But that doesn’t scale. Even as agents got really good at inferring or discovering information in source, this experiential knowledge—which is separate from user preferences—remained a tangible gap. The inverse is also true: agents would often discover information that is tangential to their current workstream but helpful, and those tasks, refactors, and todos would later get lost (especially if it’s an unattended session!).
We came to realize that every org has its own lore and must be facing similar problems. We decided it was time to fix that with Notion.
Give Your Agents a Memory
Lore is the tool we built for that gap: shared, persistent memory for agents, backed by Notion. It is open source under the MIT license at github.com/makenotion/lore.
We wanted to make agent experiences durable concepts, stored in Notion, and accessible by both humans and agents. There were multiple items we wanted to ensure were not lost:
Experiential knowledge . This is the kind of information that cannot be inferred by a future agent and must be re-experienced. The lengthy rediscovery phases can be short-circuited early or prevented entirely.
Follow-up tasks . Often, when an agent is working on a specific task, the agent makes note of specific, unrelated, tangential information. Due to the nature of an agent session, this information is ephemeral by nature: if the human operator was not actively reading the transcript, these un-filed followup items are gone forever.
Decisions records . Some teams have a healthy practice of keeping ADRs. Most teams strive for this, but aren’t able to do so in real-time as decisions evolve.
Procedures . These are specific workarounds or recipes. Things that could be encoded into a skill but may have usage too infrequent to warrant it.
These items become Notion pages that a later session can read back, or that a human can reference as needed. Any MCP-compatible agent harness can reference the vault, and as a result agent sessions are empowered by agents past.
Native memory systems are hyper-localized. In-harness systems are often tied to a given harness or given model provider. File-backed systems are often localized to a single machine.
We really wanted to experiment with the concept that the agents on one person’s desk could learn from the experiences of another person’s agents—perhaps even from another part of the organization. We wanted a shared platform for the things that should be carried forward.
How it works
A Lore vault is a Notion page with five databases:
Database
What it stores
Projects
The project, person, team, or agent scope
Topics
The subject areas inside that scope
Memories
Narrative context, notes, procedures, tasks
Entities
Named things the memory graph can refer to
Facts
Structured subject-predicate-object assertions
They have relations to one another, across these tables, to help in surfacing information and to help in fuzzy searching: for example, facts can have relations to topics or memories. This is an opinionated structuring of data, but structured data allowed for agents to have a predictable search structure.
Agents access Lore through the MCP, with various lore-* MCP tools. Humans, however, get access to that same information either through Notion directly (after all, these are all Notion pages!), or via a Lore CLI. The innate design is driven largely through hooks, which are intended to make the standard path entirely hands-off: agent sessions start with relevant context, are prompted to store or fetch information as needed, do their work, and quietly save new information in the background.
We weren’t interested in single-player solutions. Notion felt like the natural home for a team-focused, multiplayer service. The team already stores operational information in Notion, plans together, builds together, and more. Notion’s built-in version control and version history mechanisms combined with its familiarity are added bonuses. We wanted the information vault to be human-centric, but agent powered.
Memory has to stay clean
The first bad version of a memory system is a junk drawer with an API. All of the transcripts, all of the text, and all of the sessions in a single folder don’t do much if:
Stale information can otherwise harm an agent that would have otherwise been successful.
Irrelevant information is surfaced to those agents.
The right information is impossible to find.
By default, facts expire. Information must be continually reinforced or it...