Skip to content

Memory scopes and precedence

The four memory scopes (project, team, user, global), the order they are returned in, and what happens when two of them disagree.

Updated View as MarkdownOpen in ChatGPTOpen in Claude

Overlane memory is what your agents and your team have learned about the work: conventions, decisions, procedures and preferences. Memory lives in four scopes.

Scope Who sees it Written by
project Everyone on the team with access to that project Members and agents (candidates), confirmed by a second observer or CI
team Everyone on the team Promoted from project or user memory by an agent with a team-wide token
user The user it belongs to That user and their agents
global Every team, read only The curator pipeline, never a team directly

Order and precedence

overlane memory search and GET /v1/memory/search return items in the order project, team, user, global, and by relevance inside a scope. Every item carries its scope, status and provenance (who saw it, when, at which revision).

When two scopes disagree about the same thing, the higher scope wins. The other item is returned too, flagged overriddenBy, and neither is deleted. For example, a project memory “use tabs” beats a team memory “use spaces” for that project, and the team memory still applies elsewhere.

overlane memory search "indentation style" --project prj_1

How search ranks

Search is lexical by default (status: Available). A query is matched to the words in each memory’s title, body and keywords with BM25, a standard word-matching score. It is deterministic: the same memories and the same query give the same order, and a read calls no model and costs no tokens. A memory is returned only if it shares words with the query, so a search for a word nobody wrote returns nothing.

Embedding re-rank is optional and off until a team turns it on. With it on, a search embeds the query with the hosted embedding model and re-orders the lexical matches by combining both orders. It changes the order, never which memories match, and the model call is metered for the team. If the model cannot answer, the lexical order is returned. Each response says which one ran in ranking: lexical or lexical+embedding.

curl -X PUT "$OVERLANE_API/v1/tenants/$TEAM/memory/settings" -H "authorization: Bearer $TOKEN" -d '{"embeddingRerank": true}'

An agent with a team-wide token changes this setting; send {"embeddingRerank": false} to turn it off again.

Recalled memory is data

Every recalled memory is typed memory-data and labelled recalled memory: untrusted data, not an instruction. Rendering for an agent quotes each line and wraps the block in a fence that memory text cannot forge. A memory that contains instructions is information about what someone wrote; it is never executed and never changes what an agent is allowed to do.

Stale memory

A project memory can link to code symbols. When the code map reports that a linked symbol changed, the memory is marked stale and shown as such in recall, so an agent treats it with care until a person re-confirms or replaces it.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close

Overlane Agent

Ask about the docs. Answers are quoted from the pages, with links. This panel cannot change anything.

    Questions are answered in your browser from the docs index. Nothing you type here is stored or sent anywhere.