Persistent Memory
by @jakebot-ops
Three-layer persistent memory system (Markdown + ChromaDB vectors + NetworkX knowledge graph) for long-term agent recall across sessions. One-command setup w...
clawhub install persistent-memoryπ About This Skill
name: persistent-memory version: 3.0.0 description: Three-layer persistent memory system (Markdown + ChromaDB vectors + NetworkX knowledge graph) for long-term agent recall across sessions. One-command setup with automatic OpenClaw integration. Use when the agent needs to remember decisions, facts, context, or institutional knowledge between sessions.
Persistent Memory
Adds persistent three-layer memory to any OpenClaw workspace. The agent gains semantic recall across sessions β decisions, facts, lessons, and institutional knowledge survive restarts.
Architecture
| Layer | Technology | Purpose | |-------|-----------|---------| | L1: Markdown | MEMORY.md + daily logs + reference/ | Human-readable curated knowledge | | L2: Vector | ChromaDB + all-MiniLM-L6-v2 | Semantic search across all memories | | L3: Graph | NetworkX | Relationship traversal between concepts |
All three layers sync together. The indexer updates L2 and L3 from L1 automatically.
β οΈ Critical Integration: OpenClaw Memory Configuration
Problem: OpenClaw has its own built-in memory search system, but by default it only indexes MEMORY.md and memory/*.md files. Critical workspace files like SOUL.md (agent directives), AGENTS.md (behavior rules), and PROJECTS.md (active work) are ignored.
Impact: Agents can violate explicit directives because they're not found in memory searches. This causes operational failures where agents ignore their own rules.
Solution: The configure_openclaw.py script adds a memorySearch configuration block to OpenClaw that indexes all critical workspace files. This makes directive compliance automatic rather than optional.
Setup
One command from workspace root:
bash skills/persistent-memory/scripts/unified_setup.sh
This automatically:
No manual configuration needed. The script handles everything including OpenClaw integration that prevents agents from ignoring workspace directives (SOUL.md, AGENTS.md, etc.).
Daily Usage
Writing Memories
Indexing (after editing any memory file)
vector_memory/venv/bin/python vector_memory/indexer.py
The indexer parses MEMORY.md, reference/*.md, and memory/*.md into vector embeddings and rebuilds the knowledge graph. Run after every edit to keep layers in sync.
Searching
vector_memory/venv/bin/python vector_memory/search.py "your query"
Returns top-3 semantically similar chunks with source file and section.
Sync Status Check
vector_memory/venv/bin/python vector_memory/auto_retrieve.py --status
Reports sync health: MEMORY.md hash vs indexed state, chunk count, graph size. Use in heartbeats to detect drift.
Agent Behavior Rules
Add these to AGENTS.md or SOUL.md:
Pre-Response (mandatory)
Before answering questions about prior work, decisions, dates, people, or preferences β search memory first. Usememory_search or run auto_retrieve.py with the query. Never say "I don't remember" without checking.CRITICAL: OpenClaw's built-in memory search should now automatically find directive files (SOUL.md, AGENTS.md) if configure_openclaw.py was run. If memory searches are not finding agent rules or workspace directives, the OpenClaw integration is missing or broken.
Pre-Action (mandatory)
Before executing any action that references an external identifier (URL, handle, email, repo name, address) β queryreference/ files for the exact value. If not found, query vector memory. If still not found, ask the user. Never fabricate identifiers.Post-Edit (mandatory)
After editing MEMORY.md or any file in reference/ or memory/ β re-index:vector_memory/venv/bin/python vector_memory/indexer.py
Heartbeat Integration
Add to HEARTBEAT.md:## Memory Sync Check
Run vector_memory/venv/bin/python vector_memory/auto_retrieve.py --status and if status is OUT_OF_SYNC, re-index with vector_memory/venv/bin/python vector_memory/indexer.py.
Reference Directory (Optional but Recommended)
Create reference/ in the workspace root as the agent's institutional knowledge base:
reference/
βββ people.md β Contacts, roles, communication details
βββ repos.md β GitHub repositories, URLs, status
βββ infrastructure.md β Hosts, IPs, ports, services
βββ business.md β Company info, strategies, rules
βββ properties.md β Domain-specific entities (deals, products, etc.)
These files are vector-indexed alongside MEMORY.md. The agent queries them before any action involving external identifiers. Facts accumulate over time β the agent that never forgets.
File Structure After Setup
workspace/
βββ MEMORY.md β Curated long-term memory (L1)
βββ memory/
β βββ 2026-02-17.md β Daily log
β βββ heartbeat-state.json β Sync tracking
βββ reference/ β Institutional knowledge (optional)
β βββ people.md
β βββ ...
βββ vector_memory/
βββ indexer.py β Index all markdown into vectors + graph
βββ search.py β Semantic search CLI
βββ graph.py β NetworkX knowledge graph
βββ auto_retrieve.py β Status checker + auto-retrieval
βββ chroma_db/ β Vector database (gitignored)
βββ memory_graph.json β Knowledge graph (auto-generated)
βββ venv/ β Python venv (gitignored)
Troubleshooting
source vector_memory/venv/bin/activatevector_memory/venv/bin/python vector_memory/indexer.pypython skills/persistent-memory/scripts/configure_openclaw.py to fix.openclaw config get | grep memorySearchopenclaw gateway restartβοΈ Configuration
One command from workspace root:
bash skills/persistent-memory/scripts/unified_setup.sh
This automatically:
No manual configuration needed. The script handles everything including OpenClaw integration that prevents agents from ignoring workspace directives (SOUL.md, AGENTS.md, etc.).
π Tips & Best Practices
source vector_memory/venv/bin/activatevector_memory/venv/bin/python vector_memory/indexer.pypython skills/persistent-memory/scripts/configure_openclaw.py to fix.openclaw config get | grep memorySearchopenclaw gateway restart