Skip to content

Scopes & Hierarchy ​

Scopes control which memories are visible to which projects. mememory uses a two-level hierarchy that enables knowledge sharing while preserving specificity.

The Two Scopes ​

global ​

Visible to all projects. Use for universal knowledge.

Good forExamples
User identity"User's name is Scott"
Universal preferences"Respond in Russian"
Cross-project rules"Never commit .env files"
Workflow preferences"Don't refactor without asking"
remember(
  content="Never commit .env files to version control",
  type="rule",
  scope="global"
)

project ​

Visible only within a named project. Requires the project parameter.

Good forExamples
Architecture"Uses SQLite with better-sqlite3, no ORM"
Tech stack"React 19 + Vite + Tailwind CSS 4"
Project decisions"Chose Zustand for state management"
Active context"Preparing for demo on April 5"
remember(
  content="Uses PostgreSQL 17 with pgvector for vector storage",
  type="fact",
  scope="project",
  project="mememory"
)

The key feature of scopes is hierarchical inheritance during recall. Project scope automatically includes global.

How it works ​

recall(query="database architecture")
→ searches: global only

recall(query="database architecture", project="match")
→ searches: global + project:match

Visual diagram ​

┌─────────────────────────────────────────────┐
│                  global                      │
│  "Never commit .env files"                   │
│  "User's name is Scott"                      │
│                                              │
│  ┌───────────────────────────────────────┐   │
│  │          project: match               │   │
│  │  "Uses SQLite with better-sqlite3"    │   │
│  │  "React 19 + Vite + Tailwind"         │   │
│  └───────────────────────────────────────┘   │
│                                              │
│  ┌───────────────────────────────────────┐   │
│  │         project: mememory             │   │
│  │  "Uses PostgreSQL + pgvector"         │   │
│  │  "Go monorepo with Docker stack"      │   │
│  └───────────────────────────────────────┘   │
└─────────────────────────────────────────────┘

When an agent works within project match, it sees global + match memories. An agent in project mememory sees global + mememory memories. Neither sees the other's project-scoped content.

SQL Filter Implementation ​

Under the hood, hierarchical search generates an OR-based WHERE clause:

sql
-- recall(project="match")
SELECT *, 1 - (embedding <=> $1) AS score
FROM memories
WHERE (
    scope = 'global'
    OR (scope = 'project' AND project = 'match')
)
ORDER BY embedding <=> $1
LIMIT 15

This single query searches both scope levels simultaneously, ranked by vector similarity.

Scope Weights ​

After retrieval, each result's similarity score is multiplied by a scope weight to prioritize more specific memories:

ScopeWeightRationale
project1.0Most specific — highest priority
global0.8Universal — slight penalty in favor of local knowledge

This means a project-level memory with 85% similarity can outrank a global memory with 95% similarity. Specific knowledge outranks general knowledge.

The full scoring formula is:

final_score = similarity x scope_weight x memory_weight x temporal_decay

See Scoring & Recall for the complete breakdown.

Scope Override Pattern ​

Project-level memories can effectively override global rules. For example:

# Global rule
remember(content="Never use ORM", type="rule", scope="global")

# Project exception
remember(
  content="In convervox we use Drizzle ORM — complex schema justifies it",
  type="decision",
  scope="project",
  project="convervox",
  supersedes="<id-of-global-no-orm-rule>"
)

The supersede mechanism combined with scope weights ensures the project-specific decision wins within the convervox project, while the global rule remains active for all other projects.

Choosing the Right Scope ​

QuestionScope
Would this apply in ANY project?global
Only in THIS project?project

WARNING

Avoid over-scoping. If a rule applies globally, store it as global. Do not duplicate the same memory across multiple projects.

Released under the MIT License.