memoria
Memory frameworkOfficial Matrix Origin project
Created by Matrix Origin
Published in matrixorigin/memoria. Publisher page
626 GitHub stars
What it is
Secure memory management for AI Agents • Ensures data integrity • Reduces hallucinations • Maintains consistent long-term context
AutoGineer overview, from the brain’s own files
Memoria is a persistent memory layer designed to give AI agents reliable, auditable, and version-controlled long-term memory. By leveraging a Git-inspired architecture powered by MatrixOne, it allows agents to snapshot, branch, merge, and rollback their memory state. This ensures that memory changes are tracked and reversible, reducing hallucinations and maintaining consistency across sessions. It supports semantic search through hybrid retrieval and includes self-governing features to detect contradictions and maintain audit trails, making it a robust solution for managing agent knowledge.
How it works
Memory model: Hybrid
AutoGineer overview, from the brain’s own files
Memoria functions as a memory service that agents interact with via MCP tools. It uses a hybrid memory model where facts, preferences, and decisions are stored and retrieved. The system supports branching for isolated experimentation, allowing agents to test new information or hypotheses without altering the main memory state. It includes specific steering rules for managing the lifecycle of memories, from initial retrieval at the start of a conversation to purging transient working memories upon task completion. Data is stored using a database-native engine that supports zero-copy branching and snapshots.
| Folder | Role | Files |
|---|---|---|
| .claude | agent-config | 1 |
| .cursor | agent-config | 2 |
| .gemini | agent-config | 1 |
| .github | agent-config | 16 |
| .kiro | agent-config | 7 |
| assets | attachments | 7 |
| docs | docs | 10 |
| scripts | scripts | 2 |
| skills | agent-instructions | 7 |
| benchmarks | folder | 7 |
| config | folder | 7 |
| grafana | folder | 1 |
| memoria | folder | 280 |
| plugins | folder | 69 |
| sdk | folder | 36 |
Requirements
Apps: Docker
Databases: PostgreSQL, SQLite
API keys (by name): MEMORIA_API_KEY, MEMORIA_EMBEDDING_API_KEY, MEMORIA_LLM_API_KEY
Works with: Claude Code, Cursor, Gemini CLI, Kiro
Set it up
This brain runs code automatically: 5 scripts. Review README.md, scripts/install.ps1, scripts/install.sh before opening the folder in Claude Code. No step below turns a hook on for you.
README.md:curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bashREADME.md:curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bashREADME.md:command -v memoria >/dev/null || curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash -s -- -y -d ~/.local/binscripts/install.ps1:pwsh scripts/install.ps1scripts/install.sh:sh scripts/install.sh
- Not scanned by AutoGineerThe author’s README also describes installing it with Docker Compose. Read its install section: AutoGineer did not scan that path. https://github.com/matrixorigin/memoria/blob/93ccccf2ea8da4c205ac2d93c1a010c287bc742d/README.md#-quick-start
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/matrixorigin/memoria/blob/93ccccf2ea8da4c205ac2d93c1a010c287bc742d/README.md#-quick-start
Created by Matrix Origin. Published in matrixorigin/memoria. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Persistent memory across agent sessions
- Git-like version control for agent knowledge
- Isolated experimentation via memory branching
- Semantic and full-text hybrid retrieval
- Automated contradiction detection and memory governance
- “Let's try switching from PostgreSQL to SQLite.”
- The agent creates a new memory branch 'eval_sqlite', performs experiments, and allows the user to diff and merge the results back to main.
- “I want to add OAuth support to the API.”
- The agent searches for existing goals, stores the new goal, and tracks progress as working memories across sessions.
- “What are my deployment preferences?”
- The agent retrieves relevant semantic memories to provide context-aware information based on previous sessions.
Documentation by Matrix Origin
<div align="center"> <img src="assets/memoria-logo.png" alt="Memoria Logo" width="300"/>
Memoria
The World's First Git for AI Agent Memory
Snapshot · Branch · Merge · Rollback — for memory, not code.
Git made code safe to change. Memoria makes memory safe to change.
Image: CI Image: Release Image: GitHub Stars Image: Downloads Image: License Image: MCP Image: MatrixOne Image: Paper
Quick Start · Memoria in Astra · Why Memoria · Research · See It in Action · API Reference · Architecture · Development · Citation
</div>
Overview
Memoria is a persistent memory layer for AI agents with Git-level version control. Every memory change is tracked, auditable, and reversible — snapshots, branches, merges, and time-travel rollback, all powered by MatrixOne's native Copy-on-Write engine.
A core memory component of MatrixOrigin's Astra.
Astra runs the agent. Memoria helps it remember across sessions. MatrixOne powers the data storage and search.
Using Astra? · Use Memoria with another agent
<table> <tr> <td align="center" width="33%">
🔀 Git for Memory
Zero-copy branching, instant snapshots, point-in-time rollback — version control for every memory mutation
</td> <td align="center" width="33%">
🔍 Semantic Search
Vector + full-text hybrid retrieval finds memories by meaning, not just keywords
</td> <td align="center" width="33%">
🛡️ Self-Governing
Auto-detects contradictions, quarantines low-confidence memories, maintains audit trails
</td> </tr> </table>
<table> <tr> <td align="center" width="33%">
🔒 Private by Default
Local embedding model option — no data leaves your machine
</td> <td align="center" width="33%">
🧠 Cross-Conversation
Preferences, facts, and decisions persist across sessions
</td> <td align="center" width="33%">
📋 Full Audit Trail
Every memory mutation has a snapshot + provenance chain
</td> </tr> </table>
Supported Agents
<p align="center"> <a href="https://kiro.dev"><img src="https://img.shields.io/badge/Kiro-00C853?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHRleHQgeD0iNCIgeT0iMTgiIGZvbnQtc2l6ZT0iMTYiIGZpbGw9IndoaXRlIj5LPC90ZXh0Pjwvc3ZnPg==&logoColor=white" alt="Kiro"/></a> <a href="https://cursor.sh"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor"/></a> <a href="https://docs.anthropic.com/en/docs/claude-code"><img src="https://img.shields.io/badge/Claude_Code-D97757?style=for-the-badge&logo=anthropic&logoColor=white" alt="Claude Code"/></a> <a href="https://openai.com/index/introducing-codex/"><img src="https://img.shields.io/badge/Codex-412991?style=for-the-badge&logo=openai&logoColor=white" alt="Codex"/></a> <a href="https://geminicli.com"><img src="https://img.shields.io/badge/Gemini_CLI-4285F4?style=for-the-badge&logo=google&logoColor=white" alt="Gemini CLI"/></a> <a href="plugins/openclaw/README.md"><img src="https://img.shields.io/badge/OpenClaw-FF6B6B?style=for-the-badge" alt="OpenClaw"/></a> <a href="plugins/hermes/README.md"><img src="https://img.shields.io/badge/Hermes-8B5CF6?style=for-the-badge" alt="Hermes"/></a> </p>
<p align="center"><i>Works with any MCP-compatible agent</i></p>
🧠 Memoria in Hermes
Memoria is available from the Hermes plugin catalog. Log in at Memoria and create/copy a memory-service API key, then run:
hermes plugins install memoria --yes-deps --enable
hermes memory setup
hermes memory statusIn the interactive setup, select memoria, paste your API key at the masked
prompt, and choose whether to enable automatic capture (off by default). Confirm
that status reports memoria, installed and available, then exit any existing
conversation and start a new one with hermes. Status checks local readiness;
verify a live write using the complete Hermes guide.
The free Memoria Cloud requires no local Memoria server or database. Self-hosting,
fixed GitHub installation and named profiles are covered in the same guide.
🧩 Memoria in Astra
In Astra, Memoria stores and retrieves facts, preferences, decisions, and session summaries so agents can reuse knowledge across conversations. Memory changes can be reviewed and rolled back.
| How you use it | Where to start |
|---|---|
| Hosted Astra | Memoria is already running for you. Follow the Astra quick start. |
| Self-hosted Astra | Astra's deployment includes compatible Memoria and MatrixOne services. Follow Astra's Docker setup. |
| Memoria with other agents | Use Memoria independently via MCP. Follow the Memoria quick start below. |
For example, search your memories from Astra:
astra memory search "deployment preferences"🚀 Quick Start
<details open> <summary><b>☁️ Memoria Cloud (Recommended — no Docker, no database)</b></summary> <br/>
1. Sign up at thememoria.ai and get your token
2. Install & configure
curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash
cd your-project
memoria init -i # Select "Remote" mode, paste your token3. Restart & verify — restart your AI tool, then ask: "Do you have memory tools available?"
</details>
<details> <summary><b>🐳 Self-Hosted (Docker — full data control)</b></summary> <br/>
# 1. Start MatrixOne + API
git clone https://github.com/matrixorigin/Memoria.git
cd Memoria
docker compose up -d
# 2. Install CLI
curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash
# 3. Configure your AI tool
cd your-project
memoria init -i # Select "Embedded" modeRestart your AI tool, then ask: "Do you have memory tools available?"
</details>
<details> <summary><b>🦞 OpenClaw Plugin</b></summary> <br/>
Use the native OpenClaw plugin: OpenClaw Plugin Setup
# ensure memoria CLI exists
command -v memoria >/dev/null || curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash -s -- -y -d ~/.local/bin
# install & enable
openclaw plugins install @matrixorigin/memory-memoria
openclaw plugins enable memory-memoria
# cloud-first setup
openclaw memoria setup --mode cloud --api-url <MEMORIA_API_URL> --api-key <MEMORIA_API_KEY> --install-memoria
openclaw memoria health</details>
Or download binaries directly from GitHub Releases. For detailed setup, see Setup Skill.
💡 Why Memoria?
| Capability | Memoria | Letta / Mem0 / Traditional RAG |
|---|---|---|
| Git-level version control | Native zero-copy snapshots & branches | File-level or none |
| Isolated experimentation | One-click branch, merge after validation | Manual data duplication |
| Audit trail | Full snapshot + provenance on every mutation | Limited logging |
| Semantic retrieval | Vector + full-text hybrid search | Vector only |
| Self-governance | Automatic contradiction detection & quarantine | Manual cleanup |
🔬 Research Foundation
Memoria's Git-for-Data layer is backed by Version Control System for Data with MatrixOne, our arXiv paper on bringing Git-like workflows directly into a cloud-native database.
The paper describes how MatrixOne's immutable storage and MVCC architecture make clone, branch / tag, diff, merge, and revert practical at terabyte scale without loading whole datasets into memory. Memoria applies the same foundation to AI-agent memory, so every memory change can be isolated, reviewed, merged, or rolled back with database-native consistency.
🎬 See Git for Data in Action
<p align="center"> <img src="assets/git4data-story-writing-demo.svg" alt="Animated Memoria Git-for-Data demo showing an author branching a story draft, merging a better plot direction into the main storyline, and rolling back the last two unsatisfying beats." width="100%"/> </p>
A story-writing scenario demonstrates the core concept: an author has accepted story beats on main, opens an experimental branch for a different plot direction, merges the stronger draft back, and rolls back when the newest beats don't work.
<details> <summary><b>What the demo shows</b></summary>
Main storyline — accepted story beats live on
mainExperimental branch — the author tries a new plot turn without rewriting canon
Merge — the stronger draft is promoted back into the main storyline
Rollback — the last two bad turns are discarded, and writing resumes from a safe snapshot
</details>
📖 Steering Rules
Steering rules teach your AI agent when and how to use memory tools. Without them, the agent has tools but no guidance — like having a database without knowing the schema.
| Rule | Purpose |
|---|---|
memory | Core memory tools — when to store, retrieve, correct, purge |
session-lifecycle | Bootstrap at conversation start, cleanup at end |
memory-hygiene | Proactive governance, contradiction resolution, snapshot cleanup |
memory-branching-patterns | Isolated experiments with branches |
goal-driven-evolution | Track goals, plans, progress across conversations |
File locations: Kiro: .kiro/steering/*.md · Cursor: .cursor/rules/*.mdc · Claude: .claude/rules/*.md · Codex: AGENTS.md · Gemini CLI: GEMINI.md + .gemini/*.md
After upgrading: memoria rules --force
<details> <summary><b>Example: Conversation Lifecycle</b></summary>
┌─────────────────────────────────────────────────────────────────────────────┐
│ CONVERSATION START │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 1. memory_retrieve(query="<user's question>") ← load context │ │
│ │ 2. memory_search(query="GOAL ACTIVE") ← check active goals │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ MID-CONVERSATION │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • User states preference → memory_store(type="profile") │ │
│ │ • User corrects a fact → memory_correct(query="...", new="...") │ │
│ │ • Topic shifts → memory_retrieve(query="<new topic>") │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ CONVERSATION END │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 1. memory_purge(topic="<task>") ← clean up working memories │ │
│ │ 2. memory_store(type="episodic") ← save session summary │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘</details>
<details> <summary><b>Example: Goal-Driven Evolution</b></summary>
You: "I want to add OAuth support to the API"
AI: → memory_search(query="GOAL OAuth") ← check for existing goal
→ memory_store(content="🎯 GOAL: Add OAuth support\nStatus: ACTIVE", type="procedural")
... works on implementation, stores progress as working memories ...
→ memory_store(content="✅ STEP 1/3: Added OAuth routes", type="working")
→ memory_store(content="❌ STEP 2/3: Token refresh failed — need to fix expiry logic", type="working")
... next conversation ...
AI: → memory_search(query="GOAL ACTIVE") ← finds OAuth goal
→ memory_search(query="STEP for GOAL OAuth") ← loads progress
"Last time we were working on OAuth. Step 2 failed on token refresh. Want to continue?"
... goal completed ...
AI: → memory_correct(query="GOAL OAuth", new_content="🎯 GOAL: OAuth — ✅ ACHIEVED")
→ memory_store(content="💡 LESSON: Token refresh needs 5min buffer before expiry", type="procedural")
→ memory_purge(topic="STEP for GOAL OAuth") ← clean up working memories</details>
<details> <summary><b>Example: Branch for Risky Experiments</b></summary>
You: "Let's try switching from PostgreSQL to SQLite"
AI: → memory_branch(name="eval_sqlite")
→ memory_checkout(name="eval_sqlite")
... experiments on branch, stores findings ...
→ memory_diff(source="eval_sqlite") ← preview changes
→ memory_checkout(name="main")
→ memory_merge(source="eval_sqlite") ← or delete if failed</details>
📚 API Reference
Core Tools
| Tool | Description |
|---|---|
memory_store | Store a new memory |
memory_retrieve | Retrieve relevant memories (call at conversation start) |
memory_search | Semantic search across all memories |
memory_correct | Update an existing memory |
memory_purge | Delete by ID or topic keyword |
memory_list | List active memories |
memory_profile | Get user's memory-derived profile |
memory_feedback | Record relevance feedback (useful/irrelevant/outdated/wrong) |
memory_capabilities | List available memory tools |
<details> <summary><b>Snapshots & Branches</b></summary>
| Tool | Description |
|---|---|
memory_snapshot | Create named snapshot |
memory_snapshots | List snapshots with pagination |
memory_snapshot_delete | Delete snapshots by name, prefix, or age |
memory_rollback | Restore to snapshot |
memory_branch | Create isolated branch |
memory_branches | List all branches |
memory_checkout | Switch branch |
memory_merge | Merge branch back |
memory_branch_delete | Delete a branch |
memory_diff | Preview merge changes |
</details>
REST clients can use cached-count snapshot listing to avoid historical count queries and exclude automatic safety snapshots.
<details> <summary><b>Maintenance</b></summary>
| Tool | Description |
|---|---|
memory_governance | Quarantine low-confidence memories (1h cooldown) |
memory_consolidate | Detect contradictions (30min cooldown) |
memory_reflect | Synthesize insights (2h cooldown) |
memory_rebuild_index,memory_observe,memory_get_retrieval_params,memory_tune_params,memory_extract_entities, andmemory_link_entitiesare available via REST API but hidden from MCP tool listing — they are ops/debug tools not intended for agent use.
</details>
Memory Types
| Type | Use for | Example |
|---|---|---|
semantic | Project facts, decisions | "Uses Go 1.22 with modules" |
profile | User preferences | "Prefers pytest over unittest" |
procedural | Workflows, how-to | "Deploy: make build && kubectl apply" |
working | Temporary task context | "Currently debugging auth module" |
episodic | Session summaries | "Session: optimized DB, added indexes" |
Full API details: API Reference Skill
Retry-safe single-memory writes: Idempotent store protocol.
Trusted adapter content preservation: Content-filter policy.
🔧 Commands
| Command | Description |
|---|---|
memoria init -i | Interactive setup wizard |
memoria status | Show config and rule versions |
memoria rules | Update steering rules (auto-detect, --tool, or -i) |
memoria mcp | Start MCP server |
memoria serve | Start REST API server |
memoria benchmark | Run benchmark suite |
🤖 For AI Agents
If you're an AI agent helping a user set up Memoria:
Load the Setup Skill — it has step-by-step instructions
Ask before acting: which AI tool? · database mode? · embedding service? (Self-Hosted only)
Run
memoria init -iin the user's project directoryTell user to restart their AI tool, then verify with
memory_retrieve("test")
Self-Hosted only: Configure embedding BEFORE first MCP server start — dimension is locked into schema.
🏗️ Architecture
Cloud / Remote Mode:
┌─────────────┐ MCP (stdio) ┌──────────────────┐ HTTP/REST ┌──────────────────┐
│ AI Agent │ ◄─────────────────► │ Memoria CLI │ ◄──────────────► │ Memoria Cloud │
│ │ store / retrieve │ (MCP bridge) │ Bearer token │ API Server │
└─────────────┘ └──────────────────┘ └──────────────────┘
Self-Hosted / Embedded Mode:
┌─────────────┐ MCP (stdio) ┌──────────────────────────────────────┐ SQL ┌────────────┐
│ AI Agent │ ◄─────────────────► │ Memoria MCP Server │ ◄──────────► │ MatrixOne │
│ │ store / retrieve │ ├── Canonical Storage │ vector + │ Database │
│ │ │ ├── Retrieval (vector / semantic) │ fulltext │ │
│ │ │ └── Git-for-Data (snap/branch/merge)│ │ │
└─────────────┘ └──────────────────────────────────────┘ └────────────┘For codebase details, see Architecture Skill.
🛠️ Development
make up # Start MatrixOne + API
make test # Run all tests
make release VERSION=0.2.0 # Bump, tag, pushDeveloper documentation (for contributing to Memoria):
| Skill | Description |
|---|---|
| Architecture | Codebase layout, traits, tables |
| API Reference | REST endpoints, request/response |
| Deployment | Docker, K8s, multi-instance |
| Plugin Development | Governance plugins |
| Release | Version bump, CI/CD |
| Local Embedding | Offline embedding build |
📝 Citation
If you use Memoria in academic work, or refer to its Git-for-Data foundation for AI-agent memory, please cite the MatrixOne paper that describes the underlying data version control design:
@misc{gou2026versioncontrolsystemdata,
title={Version Control System for Data with MatrixOne},
author={Gou, Hongshen and Tian, Feng and Wang, Long and Deng, Nan and Xu, Peng},
year={2026},
eprint={2604.03927},
archivePrefix={arXiv},
primaryClass={cs.DB},
doi={10.48550/arXiv.2604.03927},
url={https://arxiv.org/abs/2604.03927}
}🌟 Community
We'd love your support! If Memoria helps you, consider giving us a star.
Contributing — See the developer documentation above and check out our issue templates for bug reports, feature requests, and more.
License
Apache-2.0 © MatrixOrigin
.kiro/steering/memory.md
inclusion: always
<!-- memoria-version: 0.1.0-->
Memory Integration (Memoria Lite)
You have persistent memory via MCP tools. Memory survives across conversations.
🔴 MANDATORY: Every conversation start
Call memory_retrieve with a semantic query derived from the user's message BEFORE responding.
Query rules:
✅ Extract key concepts → "benchmark optimization", "graph retrieval bug"
❌ Don't use meta-queries → "all memories", "everything", "list all"
After retrieval:
Results → use as reference, verify against current context
"No relevant memories" → normal for new users, proceed
⚠️ warnings → inform user, offer
memory_governance
🔴 MANDATORY: Every conversation turn
After responding, decide if anything is worth remembering:
User stated a preference, fact, or decision →
memory_storeUser corrected a previously stored fact →
memory_correct(notmemory_store+memory_purge)You learned something new about the project/workflow →
memory_storeDo NOT store: greetings, trivial questions, things already in memory.
Deduplication is automatic. The system detects semantically similar memories and supersedes old ones. You do not need to check for duplicates before storing.
If memory_store or memory_correct response contains ⚠️, tell the user — it means the embedding service is down and retrieval will degrade to keyword-only search.
🟡 When NOT to store (noise reduction)
Do NOT call memory_store for:
Transient debug context: temporary print statements, one-off test values, ephemeral error messages
Vague or low-confidence observations: "might be using X", "probably prefers Y" — wait for confirmation
Conversation-specific context that won't matter next session: "currently looking at line 42", "just ran the test"
Information already in memory: if
memory_retrievealready returned it, don't store againTrivial or obvious facts: "user is writing code", "user asked a question"
🟡 Working memory lifecycle — CRITICAL for long debug sessions
working memories are session-scoped temporary context. They persist and will be retrieved in future sessions unless explicitly cleaned up.
When to purge working memories:
Task or debug session is complete →
memory_purge(topic="<task keyword>", reason="task complete")You stored a working memory that turned out to be wrong →
memory_purge(memory_id="...", reason="incorrect conclusion")User says "start fresh", "forget what we tried", "let's try a different approach"
Only purge completed tasks — leave active task working memories for next session
Promote or purge as you go:
Hypothesis confirmed →
memory_storethe conclusion assemantic, thenmemory_purgethe working memoryHypothesis disproven →
memory_purgethe working memory immediatelyDon't wait until session end to promote — do it as soon as you know
When a working memory contradicts current findings:
Do NOT keep both. Purge the stale one immediately:
memory_purge(memory_id="...", reason="superseded by new finding")Then store the correct conclusion as
semantic(notworking) if it's a durable fact
Anti-pattern to avoid: Storing "current bug is X" as working memory, then later finding out it's Y, but keeping both. The stale "bug is X" memory will keep surfacing and misleading future retrieval.
🟡 Correction workflow (prefer correct over store+purge)
When the user contradicts a previously stored fact:
Always use
memory_correct— notmemory_store+memory_purge. This preserves the audit trail.Prefer query-based correction:
memory_correct(query="formatting tool", new_content="Uses ruff for formatting", reason="switched from black")— no need to look up memory_id first.Only use
memory_purgewhen the user explicitly asks to forget something entirely, not when updating a fact.
🟡 Deduplication before storing
Before storing a new memory, consider:
Did
memory_retrieveat conversation start already return a similar fact? → skip ormemory_correctinsteadIs this a refinement of something already stored? → use
memory_correctwith the original as queryWhen in doubt,
memory_searchwith the key phrase first — if a match exists, correct it rather than creating a duplicate
Tool reference
Write tools
| Tool | When to use | Key params |
|---|---|---|
memory_store | User shares a fact, preference, or decision | content, memory_type (default: semantic), session_id (optional) |
memory_correct | User says a stored memory is wrong | memory_id or query (one required), new_content, reason; query mode also supports session_id + session_scope |
memory_purge | User asks to forget something | memory_id (single or comma-separated batch), topic, or exact session_id; memory_types only with session_id |
memory_purge automatically creates a safety snapshot before deleting. The response includes the snapshot name — tell the user they can memory_rollback to undo. If the response contains a ⚠️ warning about snapshot quota, relay it and suggest memory_snapshot_delete(prefix="pre_").
Read tools
| Tool | When to use | Key params |
|---|---|---|
memory_retrieve | Conversation start, or when context is needed | query, top_k (default 5), optional session_id, optional session_scope (prefer/only), explain |
memory_search | User asks "what do you know about X" or you need to browse | query, top_k (default 10), optional session_id, optional session_scope (prefer/only), explain |
memory_list | User wants a bounded inventory or a session-specific listing | limit, optional memory_type, optional exact session_id |
memory_profile | User asks "what do you know about me" | — |
memory_feedback | After using a retrieved memory, record if it was helpful | memory_id, signal (useful/irrelevant/outdated/wrong), context (optional) |
memory_feedback: Call this after retrieval when you can assess whether a memory was helpful. Signals:
useful— memory helped answer the question or complete the taskirrelevant— memory was retrieved but not relevant to the queryoutdated— memory contains stale information (considermemory_correctinstead if you know the new value)wrong— memory contains incorrect information (considermemory_correctinstead if you know the correct value)
When to call feedback vs other tools:
Memory helped →
memory_feedback(signal="useful")Memory irrelevant but correct →
memory_feedback(signal="irrelevant")Memory outdated and you know new value →
memory_correct(not feedback)Memory outdated but you don't know new value →
memory_feedback(signal="outdated")Memory wrong and you know correct value →
memory_correct(not feedback)Memory should be deleted →
memory_purge(not feedback)
Example flow:
# 1. Retrieve memories
memories = memory_retrieve(query="database config")
# 2. Use memories to answer user's question
# ... (memory about "Uses PostgreSQL" helped answer)
# 3. Record feedback for the helpful memory
memory_feedback(memory_id="abc123", signal="useful", context="answered DB question")Impact: Feedback accumulates over time. With default settings, a memory with 3 useful signals ranks ~30% higher in future retrievals. Don't call for every memory — only when you have clear signal.
memory_retrieve vs memory_search: In MCP mode, both use the same retrieval pipeline (graph → hybrid vector+fulltext → fulltext fallback). The differences are:
Both accept optional
session_idplussession_scopesession_scope="prefer"means "use this session as context, but cross-session results are still allowed" (default whensession_idis present)session_scope="only"means "strictly filter to this session"memory_retrievedefaults totop_k=5(focused);memory_searchdefaults totop_k=10(broader)Use
memory_retrievefor prompt-relevant context; usememory_searchfor broader browsing over the same retrieval pipeline
memory_list session semantics:
session_idonmemory_listis an exact filter, not a preference hintUse it to inspect one session before
memory_purge(session_id=...)or after a session-scoped correction
Debug parameter: explain=true shows execution timing and retrieval path. ONLY use when user explicitly asks to debug performance or investigate why certain memories were/weren't retrieved. DO NOT use proactively — it adds overhead and clutters output.
When to use explain:
✅ User says: "why is this slow", "show me the retrieval path", "debug this query"
❌ Normal retrieval — never add explain unless user asks
Memory types
| Type | Use for | Examples |
|---|---|---|
semantic | Project facts, technical decisions (default) | "Uses MatrixOne as primary DB", "API follows REST conventions" |
profile | User/agent identity and preferences | "Prefers concise answers", "Works on mo-dev-agent project" |
procedural | How-to knowledge, workflows | "Deploy with: make dev-start", "Run tests with pytest -n auto" |
working | Temporary context for current task | "Currently debugging embedding issue" |
tool_result | Tool execution results worth caching | "Last CI run: 126 passed, 0 failed" |
episodic | Session summaries (topic/action/outcome) | "Session Summary: Database optimization\n\nActions: Added indexes\n\nOutcome: 93% faster" |
Snapshots (save/restore/cleanup)
Use before risky changes. memory_snapshot(name) saves state, memory_rollback(name) restores it, memory_snapshots(limit, offset) lists with pagination, memory_snapshot_delete(names|prefix|older_than) cleans up.
When memory_governance reports snapshot_health with high auto_ratio (>50%), suggest cleanup:
memory_snapshot_delete(prefix="auto:")— remove auto-generated snapshotsmemory_snapshot_delete(prefix="pre_")— remove safety snapshots from purge/correctmemory_snapshot_delete(older_than="2026-01-01")— remove snapshots before a date
Branches (isolated experiments)
Git-like workflow for memory. memory_branch(name) creates, memory_checkout(name) switches, memory_diff(source) previews changes, memory_apply(source, ...) selectively promotes chosen branch items back to main, memory_merge(source) merges the whole branch back, and memory_branch_delete(name) cleans up. memory_branches() lists all.
Entity graph
Entity extraction is automatic — every memory_store triggers regex-based extraction, with LLM extraction as a fallback when configured. No manual intervention needed.
Maintenance (proactive triggers in memory-hygiene, manual triggers below)
| Tool | Trigger phrase | Cooldown |
|---|---|---|
memory_governance | "clean up memories", "check memory health", or proactively per memory-hygiene | 1 hour |
memory_consolidate | "check for contradictions", "fix conflicts" | 30 min |
memory_reflect | "find patterns", "summarize what you know" | 2 hours |
memory_snapshot_delete | When governance reports high snapshot auto_ratio, or user asks to clean snapshots | — |
memory_reflect supports mode parameter:
auto(default): uses Memoria's internal LLM if configured, otherwise returns candidates for YOU to processcandidates: always returns raw data for YOU to synthesize, then store results viamemory_storeinternal: always uses Memoria's internal LLM (fails if not configured)
467 files · 445 not served here
- .claude/rules/memory-branching-patterns.md (not served here)
- .cursor/rules/memory-branching-patterns.mdc
- .cursor/rules/memory.mdc
- .dockerignore (not served here)
- .env.example (not served here)
- .gemini/memory-branching-patterns.md (not served here)
- .github/CODEOWNERS (not served here)
- .github/ISSUE_TEMPLATE/bug_report.yml (not served here)
- .github/ISSUE_TEMPLATE/config.yml (not served here)
- .github/ISSUE_TEMPLATE/documentation.yml (not served here)
- .github/ISSUE_TEMPLATE/feature_request.yml (not served here)
- .github/ISSUE_TEMPLATE/question.yml (not served here)
- .github/PULL_REQUEST_TEMPLATE.md (not served here)
- .github/workflows/pr-title.yml (not served here)
- .github/workflows/release-docker.yml (not served here)
- .github/workflows/release-npm.yml (not served here)
- .github/workflows/release-rust.yml (not served here)
- .github/workflows/sdk-python-release.yml (not served here)
- .github/workflows/test-gate.yml (not served here)
- .github/workflows/test-hermes.yml (not served here)
- .github/workflows/test-openclaw.yml (not served here)
- .github/workflows/test.yml (not served here)
- .gitignore (not served here)
- .kiro/settings/lsp.json (not served here)
- .kiro/steering/goal-driven-evolution.md
- .kiro/steering/memory-branching-patterns.md
- .kiro/steering/memory-hygiene.md
- .kiro/steering/memory.md
- .kiro/steering/session-lifecycle.md
- .kiro/steering/skills.md
- .mergify.yml (not served here)
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- LICENSE
- Makefile (not served here)
- README.md
- SKILLS.md
- assets/README.md (not served here)
- assets/git4data-story-writing-demo.svg (not served here)
- assets/logo-transparent.jpg (not served here)
- assets/logo.jpg (not served here)
- assets/logo.png (not served here)
- assets/memoria-logo-transparent.png (not served here)
- assets/memoria-logo.png (not served here)
- benchmarks/datasets/core-v1.json (not served here)
- benchmarks/datasets/core-v2.json (not served here)
- benchmarks/datasets/forget-v1.json (not served here)
- benchmarks/datasets/graph-entity-v1.json (not served here)
- benchmarks/datasets/graph-entity-v2.json (not served here)
- benchmarks/datasets/large-graph-v1.json (not served here)
- benchmarks/datasets/large-graph-v2.json (not served here)
- cliff.toml (not served here)
- config/grafana/provisioning/dashboards/dashboards.yml (not served here)
- config/grafana/provisioning/datasources/prometheus.yml (not served here)
- config/matrixone/cn.toml (not served here)
- config/matrixone/launch.toml (not served here)
- config/matrixone/log.toml (not served here)
- config/matrixone/tn.toml (not served here)
- config/prometheus/prometheus.yml (not served here)
- docker-compose.remote.yml (not served here)
- docker-compose.yml (not served here)
- docs/api/content_filter_policy.md (not served here)
- docs/api/episodic_memory.md (not served here)
- docs/api/idempotent_store.md (not served here)
- docs/branch-copy-compatibility.md
- docs/graph-benchmark-rationale.md
- docs/legacy-snapshot-compatibility.md (not served here)
- docs/memory-ability-taxonomy.md
- docs/per-user-database-architecture.md
- docs/snapshot-listing.md
- docs/specs/2026-04-12-group-collaboration-api.md (not served here)
- grafana/memoria-overview.json (not served here)
- memoria/.env.example (not served here)
- memoria/CHANGELOG.md (not served here)
- memoria/Cargo.lock (not served here)
- memoria/Cargo.toml (not served here)
- memoria/Cross.toml (not served here)
- memoria/Dockerfile (not served here)
- memoria/Makefile (not served here)
- memoria/README.md (not served here)
- memoria/crates/memoria-api/AUTH_CHANGES.md (not served here)
- memoria/crates/memoria-api/Cargo.toml (not served here)
- memoria/crates/memoria-api/src/auth.rs (not served here)
- memoria/crates/memoria-api/src/instrumented_embedder.rs (not served here)
- memoria/crates/memoria-api/src/lib.rs (not served here)
- memoria/crates/memoria-api/src/metrics/embedding.rs (not served here)
- memoria/crates/memoria-api/src/metrics/http.rs (not served here)
- memoria/crates/memoria-api/src/metrics/middleware.rs (not served here)
- memoria/crates/memoria-api/src/metrics/mod.rs (not served here)
- memoria/crates/memoria-api/src/metrics/render.rs (not served here)
- memoria/crates/memoria-api/src/metrics/security.rs (not served here)
- memoria/crates/memoria-api/src/metrics/types.rs (not served here)
- memoria/crates/memoria-api/src/metrics/worker.rs (not served here)
- memoria/crates/memoria-api/src/metrics_summary.rs (not served here)
- memoria/crates/memoria-api/src/models.rs (not served here)
- memoria/crates/memoria-api/src/otel.rs (not served here)
- memoria/crates/memoria-api/src/rate_limit.rs (not served here)
- memoria/crates/memoria-api/src/routes/admin.rs (not served here)
- memoria/crates/memoria-api/src/routes/auth.rs (not served here)
- memoria/crates/memoria-api/src/routes/governance.rs (not served here)
- memoria/crates/memoria-api/src/routes/groups.rs (not served here)
- memoria/crates/memoria-api/src/routes/mcp.rs (not served here)
- memoria/crates/memoria-api/src/routes/memory.rs (not served here)
- memoria/crates/memoria-api/src/routes/metrics.rs (not served here)
- memoria/crates/memoria-api/src/routes/mod.rs (not served here)
- memoria/crates/memoria-api/src/routes/plugins.rs (not served here)
- memoria/crates/memoria-api/src/routes/sessions.rs (not served here)
- memoria/crates/memoria-api/src/routes/snapshots.rs (not served here)
- memoria/crates/memoria-api/src/state.rs (not served here)
- memoria/crates/memoria-api/tests/api_db_verify.rs (not served here)
- memoria/crates/memoria-api/tests/api_e2e.rs (not served here)
- memoria/crates/memoria-api/tests/api_multi_db_purge.rs (not served here)
- memoria/crates/memoria-api/tests/api_multi_db_routing.rs (not served here)
- memoria/crates/memoria-api/tests/content_filter_policy.rs (not served here)
- memoria/crates/memoria-api/tests/group_collab_api.rs (not served here)
- memoria/crates/memoria-api/tests/idempotent_store.rs (not served here)
- memoria/crates/memoria-api/tests/observe_dedup.rs (not served here)
- memoria/crates/memoria-api/tests/pool_budget_e2e.rs (not served here)
- memoria/crates/memoria-api/tests/pool_isolation.rs (not served here)
- memoria/crates/memoria-api/tests/request_validation.rs (not served here)
- memoria/crates/memoria-api/tests/snapshot_pagination.rs (not served here)
- memoria/crates/memoria-api/tests/subject_isolation_e2e.rs (not served here)
- memoria/crates/memoria-api/tests/support/mod.rs (not served here)
- memoria/crates/memoria-api/tests/support/multi_db.rs (not served here)
- memoria/crates/memoria-cli/Cargo.toml (not served here)
- memoria/crates/memoria-cli/src/benchmark.rs (not served here)
- memoria/crates/memoria-cli/src/benchmark_executor.rs (not served here)
- memoria/crates/memoria-cli/src/benchmark_schema.rs (not served here)
- memoria/crates/memoria-cli/src/benchmark_scoring.rs (not served here)
- memoria/crates/memoria-cli/src/benchmark_taxonomy.rs (not served here)
- memoria/crates/memoria-cli/src/bin/loadtest.rs (not served here)
- memoria/crates/memoria-cli/src/main.rs (not served here)
- memoria/crates/memoria-cli/templates/claude_goal_evolution.md (not served here)
- memoria/crates/memoria-cli/templates/claude_memory_branching.md (not served here)
- memoria/crates/memoria-cli/templates/claude_memory_hygiene.md (not served here)
- memoria/crates/memoria-cli/templates/claude_rule.md (not served here)
- memoria/crates/memoria-cli/templates/claude_session_lifecycle.md (not served here)
- memoria/crates/memoria-cli/templates/codex_agents.md (not served here)
- memoria/crates/memoria-cli/templates/cursor_goal_evolution.md (not served here)
- memoria/crates/memoria-cli/templates/cursor_memory_branching.md (not served here)
- memoria/crates/memoria-cli/templates/cursor_memory_hygiene.md (not served here)
- memoria/crates/memoria-cli/templates/cursor_rule.md (not served here)
- memoria/crates/memoria-cli/templates/cursor_session_lifecycle.md (not served here)
- memoria/crates/memoria-cli/templates/gemini_goal_evolution.md (not served here)
- memoria/crates/memoria-cli/templates/gemini_memory_branching.md (not served here)
- memoria/crates/memoria-cli/templates/gemini_memory_hygiene.md (not served here)
- memoria/crates/memoria-cli/templates/gemini_rule.md (not served here)
- memoria/crates/memoria-cli/templates/gemini_session_lifecycle.md (not served here)
- memoria/crates/memoria-cli/templates/kiro_goal_evolution.md (not served here)
- memoria/crates/memoria-cli/templates/kiro_memory_branching.md (not served here)
- memoria/crates/memoria-cli/templates/kiro_memory_hygiene.md (not served here)
- memoria/crates/memoria-cli/templates/kiro_session_lifecycle.md (not served here)
- memoria/crates/memoria-cli/templates/kiro_steering.md (not served here)
- memoria/crates/memoria-core/Cargo.toml (not served here)
- memoria/crates/memoria-core/src/error.rs (not served here)
- memoria/crates/memoria-core/src/interfaces.rs (not served here)
- memoria/crates/memoria-core/src/lib.rs (not served here)
- memoria/crates/memoria-core/src/sensitivity.rs (not served here)
- memoria/crates/memoria-core/src/types.rs (not served here)
- memoria/crates/memoria-core/tests/sensitivity_contract.rs (not served here)
- memoria/crates/memoria-embedding/Cargo.toml (not served here)
- memoria/crates/memoria-embedding/src/http.rs (not served here)
- memoria/crates/memoria-embedding/src/lib.rs (not served here)
- memoria/crates/memoria-embedding/src/llm.rs (not served here)
- memoria/crates/memoria-embedding/src/local.rs (not served here)
- memoria/crates/memoria-embedding/src/mock.rs (not served here)
- memoria/crates/memoria-embedding/src/round_robin.rs (not served here)
- memoria/crates/memoria-git/Cargo.toml (not served here)
- memoria/crates/memoria-git/examples/restore_cleanup.rs (not served here)
- memoria/crates/memoria-git/src/lib.rs (not served here)
- memoria/crates/memoria-git/src/service.rs (not served here)
- memoria/crates/memoria-git/tests/git_ops.rs (not served here)
- memoria/crates/memoria-git/tests/legacy_snapshot.rs (not served here)
- memoria/crates/memoria-mcp/Cargo.toml (not served here)
- memoria/crates/memoria-mcp/src/config.rs (not served here)
- memoria/crates/memoria-mcp/src/git_tools.rs (not served here)
- memoria/crates/memoria-mcp/src/lib.rs (not served here)
- memoria/crates/memoria-mcp/src/purge_args.rs (not served here)
- memoria/crates/memoria-mcp/src/remote.rs (not served here)
- memoria/crates/memoria-mcp/src/server.rs (not served here)
- memoria/crates/memoria-mcp/src/tool_result.rs (not served here)
- memoria/crates/memoria-mcp/src/tools.rs (not served here)
- memoria/crates/memoria-mcp/tests/branch_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/branch_scope_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/core_tools_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/edit_log_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/feedback_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/graph_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/integration_full.rs (not served here)
- memoria/crates/memoria-mcp/tests/mcp_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/perf_optimizations_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/snapshot_e2e.rs (not served here)
- memoria/crates/memoria-mcp/tests/support/mod.rs (not served here)
- memoria/crates/memoria-mcp/tests/support/multi_db.rs (not served here)
- memoria/crates/memoria-mcp/tests/tools_unit.rs (not served here)
- memoria/crates/memoria-service/Cargo.toml (not served here)
- memoria/crates/memoria-service/build.rs (not served here)
- memoria/crates/memoria-service/src/config.rs (not served here)
- memoria/crates/memoria-service/src/content_filter.rs (not served here)
- memoria/crates/memoria-service/src/distributed.rs (not served here)
- memoria/crates/memoria-service/src/governance.rs (not served here)
- memoria/crates/memoria-service/src/graph_domains.rs (not served here)
- memoria/crates/memoria-service/src/lib.rs (not served here)
- memoria/crates/memoria-service/src/pipeline.rs (not served here)
- memoria/crates/memoria-service/src/plugin/contract.rs (not served here)
- memoria/crates/memoria-service/src/plugin/governance_hook.rs (not served here)
- memoria/crates/memoria-service/src/plugin/grpc_runtime.rs (not served here)
- memoria/crates/memoria-service/src/plugin/manifest.rs (not served here)
- memoria/crates/memoria-service/src/plugin/mod.rs (not served here)
- memoria/crates/memoria-service/src/plugin/repository.rs (not served here)
- memoria/crates/memoria-service/src/plugin/rhai_runtime.rs (not served here)
- memoria/crates/memoria-service/src/plugin/template.rs (not served here)
- memoria/crates/memoria-service/src/plugin/templates/governance_plugin.rhai (not served here)
- memoria/crates/memoria-service/src/plugin_registry.rs (not served here)
- memoria/crates/memoria-service/src/rebuild_worker.rs (not served here)
- memoria/crates/memoria-service/src/scheduler.rs (not served here)
- memoria/crates/memoria-service/src/scoring.rs (not served here)
- memoria/crates/memoria-service/src/service.rs (not served here)
- memoria/crates/memoria-service/src/stats_reporter.rs (not served here)
- memoria/crates/memoria-service/src/strategy.rs (not served here)
- memoria/crates/memoria-service/src/strategy_domain.rs (not served here)
- memoria/crates/memoria-service/src/vector_index_monitor.rs (not served here)
- memoria/crates/memoria-service/tests/data/plugins/governance-audit-note/manifest.json (not served here)
- memoria/crates/memoria-service/tests/data/plugins/governance-audit-note/plugin.rhai (not served here)
- memoria/crates/memoria-service/tests/data/plugins/governance-weekly-approval/manifest.json (not served here)
- memoria/crates/memoria-service/tests/data/plugins/governance-weekly-approval/plugin.rhai (not served here)
- memoria/crates/memoria-service/tests/governance_pool_budget_e2e.rs (not served here)
- memoria/crates/memoria-service/tests/idempotent_store_db_it.rs (not served here)
- memoria/crates/memoria-service/tests/plugin_contract.rs (not served here)
- memoria/crates/memoria-service/tests/plugin_repository.rs (not served here)
- memoria/crates/memoria-service/tests/service_unit.rs (not served here)
- memoria/crates/memoria-service/tests/shared_store_isolation_db_it.rs (not served here)
- memoria/crates/memoria-service/tests/subject_id_filter.rs (not served here)
- memoria/crates/memoria-service/tests/subject_id_mo_e2e.rs (not served here)
- memoria/crates/memoria-storage/Cargo.toml (not served here)
- memoria/crates/memoria-storage/src/branch_capability.rs (not served here)
- memoria/crates/memoria-storage/src/graph/activation.rs (not served here)
- memoria/crates/memoria-storage/src/graph/backfill.rs (not served here)
- memoria/crates/memoria-storage/src/graph/consolidation.rs (not served here)
- memoria/crates/memoria-storage/src/graph/mod.rs (not served here)
- memoria/crates/memoria-storage/src/graph/ner.rs (not served here)
- memoria/crates/memoria-storage/src/graph/retriever.rs (not served here)
- memoria/crates/memoria-storage/src/graph/store.rs (not served here)
- memoria/crates/memoria-storage/src/graph/types.rs (not served here)
- memoria/crates/memoria-storage/src/keyed_gates.rs (not served here)
- memoria/crates/memoria-storage/src/lib.rs (not served here)
- memoria/crates/memoria-storage/src/migration.rs (not served here)
- memoria/crates/memoria-storage/src/pool_config.rs (not served here)
- memoria/crates/memoria-storage/src/router.rs (not served here)
- memoria/crates/memoria-storage/src/store.rs (not served here)
- memoria/crates/memoria-storage/src/table_schema.rs (not served here)
- memoria/crates/memoria-storage/tests/branch_ops.rs (not served here)
- memoria/crates/memoria-storage/tests/call_log_schema_upgrade.rs (not served here)
- memoria/crates/memoria-storage/tests/concurrent_lock.rs (not served here)
- memoria/crates/memoria-storage/tests/lock_behavior.rs (not served here)
- memoria/crates/memoria-storage/tests/mo_compat.rs (not served here)
- memoria/crates/memoria-storage/tests/mo_correct.rs (not served here)
- memoria/crates/memoria-storage/tests/prepare_cancellation.rs (not served here)
- memoria/crates/memoria-storage/tests/router_initialization_recovery.rs (not served here)
- memoria/crates/memoria-storage/tests/router_multi_db.rs (not served here)
- memoria/crates/memoria-storage/tests/schema_meta_visibility.rs (not served here)
- memoria/crates/memoria-storage/tests/session_consistency.rs (not served here)
- memoria/crates/memoria-storage/tests/statement_cache.rs (not served here)
- memoria/crates/memoria-storage/tests/store_crud.rs (not served here)
- memoria/crates/memoria-storage/tests/subject_id_mo_compat.rs (not served here)
- memoria/crates/memoria-storage/tests/support/command_order_proxy.rs (not served here)
- memoria/crates/memoria-storage/tests/support/initialization_fault_proxy.rs (not served here)
- memoria/crates/memoria-storage/tests/support/mysql_packet.rs (not served here)
- memoria/crates/memoria-storage/tests/support/prepare_pause_proxy.rs (not served here)
- memoria/crates/memoria-storage/tests/vector_index_ops.rs (not served here)
- memoria/crates/memoria-test-utils/Cargo.toml (not served here)
- memoria/crates/memoria-test-utils/src/lib.rs (not served here)
- memoria/docs/git-for-data-rfc.md (not served here)
- memoria/proto/memoria/plugin/v1/strategy.proto (not served here)
- memoria/vendor/sqlx-mysql/.cargo-ok (not served here)
- memoria/vendor/sqlx-mysql/.cargo_vcs_info.json (not served here)
- memoria/vendor/sqlx-mysql/Cargo.toml (not served here)
- memoria/vendor/sqlx-mysql/Cargo.toml.orig (not served here)
- memoria/vendor/sqlx-mysql/LICENSE-APACHE
- memoria/vendor/sqlx-mysql/LICENSE-MIT
- memoria/vendor/sqlx-mysql/src/any.rs (not served here)
- memoria/vendor/sqlx-mysql/src/arguments.rs (not served here)
- memoria/vendor/sqlx-mysql/src/collation.rs (not served here)
- memoria/vendor/sqlx-mysql/src/column.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/auth.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/establish.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/executor.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/stream.rs (not served here)
- memoria/vendor/sqlx-mysql/src/connection/tls.rs (not served here)
- memoria/vendor/sqlx-mysql/src/database.rs (not served here)
- memoria/vendor/sqlx-mysql/src/error.rs (not served here)
- memoria/vendor/sqlx-mysql/src/io/buf.rs (not served here)
- memoria/vendor/sqlx-mysql/src/io/buf_mut.rs (not served here)
- memoria/vendor/sqlx-mysql/src/io/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/lib.rs (not served here)
- memoria/vendor/sqlx-mysql/src/migrate.rs (not served here)
- memoria/vendor/sqlx-mysql/src/options/connect.rs (not served here)
- memoria/vendor/sqlx-mysql/src/options/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/options/parse.rs (not served here)
- memoria/vendor/sqlx-mysql/src/options/ssl_mode.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/auth.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/capabilities.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/connect/auth_switch.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/connect/handshake.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/connect/handshake_response.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/connect/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/connect/ssl_request.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/packet.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/response/eof.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/response/err.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/response/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/response/ok.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/response/status.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/row.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/execute.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/prepare.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/prepare_ok.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/row.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/statement/stmt_close.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/column.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/ping.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/query.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/quit.rs (not served here)
- memoria/vendor/sqlx-mysql/src/protocol/text/row.rs (not served here)
- memoria/vendor/sqlx-mysql/src/query_result.rs (not served here)
- memoria/vendor/sqlx-mysql/src/row.rs (not served here)
- memoria/vendor/sqlx-mysql/src/statement.rs (not served here)
- memoria/vendor/sqlx-mysql/src/testing/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/transaction.rs (not served here)
- memoria/vendor/sqlx-mysql/src/type_checking.rs (not served here)
- memoria/vendor/sqlx-mysql/src/type_info.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/bigdecimal.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/bool.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/bytes.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/chrono.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/float.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/inet.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/int.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/json.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/mod.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/mysql_time.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/rust_decimal.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/str.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/text.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/time.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/uint.rs (not served here)
- memoria/vendor/sqlx-mysql/src/types/uuid.rs (not served here)
- memoria/vendor/sqlx-mysql/src/value.rs (not served here)
- plugins/clawhub/thememoria/SKILL.md (not served here)
- plugins/clawhub/thememoria/references/operations.md (not served here)
- plugins/clawhub/thememoria/references/patterns.md (not served here)
- plugins/clawhub/thememoria/references/setup.md (not served here)
- plugins/clawhub/thememoria/references/tool-surface.md (not served here)
- plugins/hermes/CLOUD_ACCEPTANCE.md (not served here)
- plugins/hermes/LICENSE
- plugins/hermes/README.md (not served here)
- plugins/hermes/README.zh-CN.md (not served here)
- plugins/hermes/RELEASE.md (not served here)
- plugins/hermes/REVIEW_FIXES.md (not served here)
- plugins/hermes/__init__.py (not served here)
- plugins/hermes/client.py (not served here)
- plugins/hermes/config.py (not served here)
- plugins/hermes/config_schema.py (not served here)
- plugins/hermes/diagnostics.py (not served here)
- plugins/hermes/outbox.py (not served here)
- plugins/hermes/plugin.yaml (not served here)
- plugins/hermes/pyproject.toml (not served here)
- plugins/hermes/tests/cloud_smoke.py (not served here)
- plugins/hermes/tests/conftest.py (not served here)
- plugins/hermes/tests/test_capture_dedup.py (not served here)
- plugins/hermes/tests/test_client_config.py (not served here)
- plugins/hermes/tests/test_cloud_smoke.py (not served here)
- plugins/hermes/tests/test_diagnostics.py (not served here)
- plugins/hermes/tests/test_provider.py (not served here)
- plugins/hermes/tests/test_reliability.py (not served here)
- plugins/hermes/tools.py (not served here)
- plugins/openclaw/.gitignore (not served here)
- plugins/openclaw/README.md (not served here)
- plugins/openclaw/docs/memoria-session-storybook.md (not served here)
- plugins/openclaw/openclaw.plugin.json (not served here)
- plugins/openclaw/openclaw/__tests__/batch-purge.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/branch-identity.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/branch-tool-selector.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/cache-invalidation.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/client.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/config.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/format.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/helpers.ts (not served here)
- plugins/openclaw/openclaw/__tests__/http-client.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/list-pagination.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/memory-id-url.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/mutation-whitespace.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/parsers.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/redirect-boundary.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/score.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/snapshot-pagination.test.ts (not served here)
- plugins/openclaw/openclaw/__tests__/snapshot-response.test.ts (not served here)
- plugins/openclaw/openclaw/client.ts (not served here)
- plugins/openclaw/openclaw/config.ts (not served here)
- plugins/openclaw/openclaw/format.ts (not served here)
- plugins/openclaw/openclaw/http-client.ts (not served here)
- plugins/openclaw/openclaw/index.ts (not served here)
- plugins/openclaw/openclaw/score.ts (not served here)
- plugins/openclaw/package-lock.json (not served here)
- plugins/openclaw/package.json (not served here)
- plugins/openclaw/scripts/build-plugin.mjs (not served here)
- plugins/openclaw/scripts/connect_openclaw_memoria.mjs (not served here)
- plugins/openclaw/scripts/install-openclaw-memoria.sh (not served here)
- plugins/openclaw/scripts/sync-version.mjs (not served here)
- plugins/openclaw/scripts/uninstall-openclaw-memoria.sh (not served here)
- plugins/openclaw/scripts/verify-package.mjs (not served here)
- plugins/openclaw/scripts/verify-packed-files.mjs (not served here)
- plugins/openclaw/scripts/verify_plugin_install.mjs (not served here)
- plugins/openclaw/skills/memoria-memory/SKILL.md (not served here)
- plugins/openclaw/skills/memoria-recovery/SKILL.md (not served here)
- plugins/openclaw/tsconfig.json (not served here)
- plugins/openclaw/vitest.config.ts (not served here)
- scripts/install.ps1 (not served here)
- scripts/install.sh (not served here)
- sdk/python/CHANGELOG.md (not served here)
- sdk/python/README.md (not served here)
- sdk/python/docs/python_sdk_design.md (not served here)
- sdk/python/pyproject.toml (not served here)
- sdk/python/src/memoria/__init__.py (not served here)
- sdk/python/src/memoria/_http.py (not served here)
- sdk/python/src/memoria/client.py (not served here)
- sdk/python/src/memoria/exceptions.py (not served here)
- sdk/python/src/memoria/models.py (not served here)
- sdk/python/src/memoria/resources/__init__.py (not served here)
- sdk/python/src/memoria/resources/branches.py (not served here)
- sdk/python/src/memoria/resources/governance.py (not served here)
- sdk/python/src/memoria/resources/memories.py (not served here)
- sdk/python/src/memoria/resources/profile.py (not served here)
- sdk/python/src/memoria/resources/snapshots.py (not served here)
- sdk/python/tests/__init__.py (not served here)
- sdk/python/tests/conftest.py (not served here)
- sdk/python/tests/integration/README.md (not served here)
- sdk/python/tests/integration/__init__.py (not served here)
- sdk/python/tests/integration/test_e2e.py (not served here)
- sdk/python/tests/unit/__init__.py (not served here)
- sdk/python/tests/unit/test_branch_path_encoding.py (not served here)
- sdk/python/tests/unit/test_branches.py (not served here)
- sdk/python/tests/unit/test_errors.py (not served here)
- sdk/python/tests/unit/test_governance.py (not served here)
- sdk/python/tests/unit/test_memories.py (not served here)
- sdk/python/tests/unit/test_memories_async.py (not served here)
- sdk/python/tests/unit/test_memory_path_encoding.py (not served here)
- sdk/python/tests/unit/test_named_delete_retries.py (not served here)
- sdk/python/tests/unit/test_pre_send_retries.py (not served here)
- sdk/python/tests/unit/test_read_post_retries.py (not served here)
- sdk/python/tests/unit/test_response_decoding.py (not served here)
- sdk/python/tests/unit/test_retry_budget_validation.py (not served here)
- sdk/python/tests/unit/test_snapshot_path_encoding.py (not served here)
- sdk/python/tests/unit/test_snapshots.py (not served here)
- sdk/python/tests/unit/test_transport_errors.py (not served here)
- skills/api-reference/SKILL.md (not served here)
- skills/architecture/SKILL.md (not served here)
- skills/deployment/SKILL.md (not served here)
- skills/local-embedding/SKILL.md (not served here)
- skills/plugin-development/SKILL.md (not served here)
- skills/release/SKILL.md (not served here)
- skills/setup/SKILL.md (not served here)
Advantages
- Provides Git-level version control including zero-copy branching, snapshots, and point-in-time rollback for memory mutations. evidence: README.md
- Enables isolated experimentation by allowing agents to branch memory state and merge only validated findings. evidence: .cursor/rules/memory-branching-patterns.mdc
- Maintains data integrity through automatic contradiction detection and quarantine of low-confidence memories. evidence: README.md
Limitations
- Requires adherence to specific steering rules and tool usage patterns to be effective. evidence: .cursor/rules/memory.mdc
- Requires manual cleanup of stale branches to avoid cognitive overhead. evidence: .cursor/rules/memory-branching-patterns.mdc
- Retrieved memories must be verified against current context as they may be stale or incomplete. evidence: .cursor/rules/memory.mdc
Security
Risk level: Medium risk
This brain runs
Agent instructions that run or fetch something (41)
.cursor/rules/memory.mdc:If ⚠️ health warnings appear → inform the user and offer to run `memory_governance`..cursor/rules/memory.mdc:| Type | Use for | Examples | |------|---------|---------| | `semantic` | Project facts, technical decisions (default) | "Uses MatrixOne as primary DB", "API follows REST conventions" | | `profile` | User/agent identity and preferences | "Prefers concise answers", "Works on mo-dev-agen …[+460 chars].kiro/steering/memory-hygiene.md:Run `memory_governance` (1h cooldown) when you notice ANY of these:.kiro/steering/memory-hygiene.md:Run `memory_consolidate` (30min cooldown) when:.kiro/steering/memory.md:| Type | Use for | Examples | |------|---------|---------| | `semantic` | Project facts, technical decisions (default) | "Uses MatrixOne as primary DB", "API follows REST conventions" | | `profile` | User/agent identity and preferences | "Prefers concise answers", "Works on mo-dev-agen …[+460 chars].kiro/steering/session-lifecycle.md:Before your first response, run a multi-query bootstrap to load full context:.kiro/steering/skills.md:| Skill | When to use | |-------|-------------| | [Architecture](../../skills/architecture/SKILL.md) | Navigating or modifying Memoria code | | [API Reference](../../skills/api-reference/SKILL.md) | Calling or implementing REST endpoints | | [Deployment](../../skills/deployment/SKILL.m …[+385 chars]plugins/clawhub/thememoria/SKILL.md:Install or verify the OpenClaw plugin: `references/setup.md`skills/api-reference/SKILL.md:It does not generate embeddings or run vector, graph, hybrid, temporal, or confidence scoring and is intentionally not exposed as an MCP tool.skills/architecture/SKILL.md:async fn execute(&self, store, task, plan) -> Result<GovernanceExecution>;skills/architecture/SKILL.md:make check # cargo check + clippy -D warnings (MUST pass)skills/architecture/SKILL.md:make test-unit # Unit tests (no DB): memoria-core, memoria-service, memoria-mcpskills/architecture/SKILL.md:make test # All tests (needs MatrixOne, --test-threads=1)skills/architecture/SKILL.md:make test-e2e # API e2e tests onlyskills/deployment/SKILL.md:docker compose up -dskills/deployment/SKILL.md:Verify: `curl http://localhost:8100/health`· uses the networkskills/deployment/SKILL.md:Run behind reverse proxy with TLS in productionskills/local-embedding/SKILL.md:make build-localskills/local-embedding/SKILL.md:| Problem | Fix | |---------|-----| | "compiled without local-embedding" | Build from source: `make build-local` | | Model download fails | Set `HF_ENDPOINT` for mirror, or manually download to `~/.cache/fastembed/` | | High memory | Default ~100MB.skills/plugin-development/SKILL.md:"capabilities": ["governance.plan", "governance.execute"],skills/plugin-development/SKILL.md:`capabilities`: must include `governance.plan` and/or `governance.execute`skills/plugin-development/SKILL.md:if ctx["phase"] == "execute" {skills/release/SKILL.md:| Step | Who | How | |------|-----|-----| | Bump version, tag, push | You | `make release VERSION=x.y.z` | | Build binaries (4 platforms) | CI | `release-rust.yml` | | Build + push Docker image | CI | `release-docker.yml` | | Create GitHub Release | CI | `softprops/action-gh-release` |skills/release/SKILL.md:git status # Must be cleanskills/release/SKILL.md:make release VERSION=0.2.0skills/release/SKILL.md:make release-rc VERSION=0.2.0-rc1skills/release/SKILL.md:make release-docker # :latestskills/release/SKILL.md:make release-docker VERSION=0.2.0 # :0.2.0 + :latestskills/release/SKILL.md:Both release workflows run full test suite before publishing.skills/release/SKILL.md:[ ] `make release VERSION=x.y.z`skills/setup/SKILL.md:Ask: "Use Memoria Cloud, or run your own instance?"skills/setup/SKILL.md:**Memoria Cloud (recommended)** → sign up at [thememoria.ai](https://thememoria.ai/auth), get API URL + token, then proceed to Step 2· uses the networkskills/setup/SKILL.md:No → run `docker compose up -d` in the Memoria repo root (wait 30-60s for first start)skills/setup/SKILL.md:One-line install (recommended):skills/setup/SKILL.md:Or download manually from [GitHub Releases](https://github.com/matrixorigin/Memoria/releases).· uses the networkskills/setup/SKILL.md:Platform-specific manual install:skills/setup/SKILL.md:docker compose up -d # Start MatrixOneskills/setup/SKILL.md:docker ps --filter name=matrixone # Verify (wait 30-60s)skills/setup/SKILL.md:Or run: `memoria status`skills/setup/SKILL.md:| Problem | Fix | |---------|-----| | MatrixOne won't start | `docker logs memoria-matrixone` | | Port 6001 in use | Change `MO_PORT` in `.env` | | Can't connect to DB | Wait 30-60s on first start | | Docker permission denied | `sudo usermod -aG docker $USER && newgrp docker` | | Docke …[+152 chars]skills/setup/SKILL.md:Run `which memoria` to verify CLI installed 2.
Install scripts (5)
README.md:curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash· uses the networkREADME.md:curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash· uses the networkREADME.md:command -v memoria >/dev/null || curl -sSL https://raw.githubusercontent.com/matrixorigin/Memoria/main/scripts/install.sh | bash -s -- -y -d ~/.local/bin· uses the networkscripts/install.ps1:pwsh scripts/install.ps1· uses the networkscripts/install.sh:sh scripts/install.sh· uses the network
- Medium risk: runs-install-script-remote-exec (README.md:155)
- Medium risk: runs-install-script-remote-exec (README.md:175)
- Medium risk: runs-install-script-remote-exec (README.md:194)
- Medium risk: runs-install-script-network-variable-host (scripts/install.ps1)
- Medium risk: network-variable-host (scripts/install.ps1:119)
- Medium risk: network-variable-host (scripts/install.ps1:125)
- Medium risk: runs-install-script-network-variable-host (scripts/install.sh)
- Medium risk: network-variable-host (scripts/install.sh:295)
- Medium risk: runs-instruction-instruction-network (skills/setup/SKILL.md:14)
- Medium risk: remote-exec-pipe (skills/setup/SKILL.md:58)
- Medium risk: runs-instruction-instruction-network (skills/setup/SKILL.md:61)
- Low risk: scripts-present (scripts/install.ps1)
- Low risk: scripts-present (scripts/install.sh)
- Low risk: network-instructions (skills/deployment/SKILL.md:14)
- Low risk: network-instructions (skills/setup/SKILL.md:58)
Attribution and licence
- Created by
- Matrix Origin
- Publisher
- Matrix Origin (Official Matrix Origin project)
- Source
- matrixorigin/memoria · commit 93ccccf
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Matrix Origin.
Install from source
445 of its files are not served here, so there is no ZIP. matrixorigin/memoria at 93ccccf