Organize, verify, archive, and erase authorized project memory while keeping registry truth under owner control.
Memory
neural-memory
Persist and recall related agent memories through a local neural graph with causal and temporal links.
What it does
Store facts, decisions, errors, preferences, and TODOs in a local SQLite neural graph, then retrieve related memories through spreading activation rather than keyword or vector similarity. Typed temporal, causal, semantic, emotional, and conflict links support associative recall, contradiction detection, decay, causal tracing, snapshots, rollback, and filtered transfer between isolated brains.
When to use it
- Restoring context at the start of a session
- Recording project decisions and recurring errors
- Tracing why a past event occurred
- Transferring filtered knowledge between projects
The skill document
NeuralMemory — Associative Memory for AI Agents
A biologically-inspired memory system that uses spreading activation instead of keyword/vector search. Memories form a neural graph where neurons connect via 20 typed synapses. Frequently co-accessed memories strengthen their connections (Hebbian learning). Stale memories decay naturally. Contradictions are auto-detected.
Why not just vector search? Vector search finds documents similar to your query. NeuralMemory finds conceptually related memories through graph traversal — even when there's no keyword or embedding overlap. "What decision did we make about auth?" activates time + entity + concept neurons simultaneously and finds the intersection.
Setup
1. Install NeuralMemory
pip install neural-memory
The brain and config at ~/.neuralmemory/ are auto-created on first use.
2. Install the OpenClaw Plugin (Recommended)
The plugin occupies the exclusive memory slot — auto-injects context before each agent run and auto-captures memories after.
# Install from npm
npm install -g neuralmemory
Add to ~/.openclaw/openclaw.json:
{
"plugins": {
"load": {
"paths": [""]
},
"entries": {
"neuralmemory": {
"enabled": true,
"config": {
"pythonPath": "python",
"brain": "default",
"autoContext": true,
"autoCapture": true
}
}
},
"slots": {
"memory": "neuralmemory"
}
}
}
Plugin features:
- 6 tools registered automatically (nmem_remember, nmem_recall, nmem_context, nmem_todo, nmem_stats, nmem_health)
before_agent_starthook: injects tool instructions + relevant memories as context (persists across/new)agent_endhook: auto-extracts facts, decisions, and TODOs from the conversation- Configurable:
contextDepth(0-3),maxContextTokens(100-10000)
After installing, build the plugin:
cd
npm run build
This compiles TypeScript to JavaScript in dist/. The plugin entry point is dist/index.js.
Windows Installation
On Windows, use forward slashes or escaped backslashes in openclaw.json paths:
{
"plugins": {
"load": {
"paths": ["C:/Users//AppData/Roaming/npm/node_modules/neuralmemory"]
}
}
}
To find the installed path:
npm list -g neuralmemory --parseable
If openclaw plugins list doesn't show the plugin:
- Verify the path in
openclaw.jsonpoints to the package root (wherepackage.jsonis) - Ensure
npm run buildwas run (thedist/folder must exist with compiled.jsfiles) - Use
pythoninstead ofpython3in the plugin config (Windows default)
Alternative: MCP Configuration (Manual)
If you prefer MCP over the plugin, add to ~/.openclaw/mcp.json:
{
"mcpServers": {
"neural-memory": {
"command": "python",
"args": ["-m", "neural_memory.mcp"],
"env": {
"NEURALMEMORY_BRAIN": "default"
}
}
}
}
On Windows, use "python" (not "python3"). This gives you all 63 MCP tools but without the auto-context/auto-capture hooks.
3. Verify
nmem stats
You should see brain statistics (neurons, synapses, fibers).
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
openclaw plugins list doesn't show plugin | Plugin path wrong or not built | Run npm run build, verify path in openclaw.json |
Agent runs nmem remember in terminal | Agent confused CLI vs tool | Plugin now auto-injects tool instructions via systemPrompt |
Agent forgets tools after /new | No tool instructions in new session | Plugin now injects systemPrompt on every before_agent_start |
python3 not found (Windows) | Windows uses python not python3 | Set pythonPath: "python" in plugin config |
| Timeout errors | Slow machine or large brain | Increase timeout in plugin config (max 120000ms) |
Tools Reference
Core Memory Tools
| Tool | Purpose | When to Use |
|---|---|---|
nmem_remember | Store a memory | After decisions, errors, facts, insights, user preferences |
nmem_recall | Query memories | Before tasks, when user references past context, "do you remember..." |
nmem_context | Get recent memories | At session start, inject fresh context |
nmem_todo | Quick TODO with 30-day expiry | Task tracking |
Intelligence Tools
| Tool | Purpose | When to Use |
|---|---|---|
nmem_auto | Auto-extract memories from text | After important conversations — captures decisions, errors, TODOs automatically |
nmem_recall (depth=3) | Deep associative recall | Complex questions requiring cross-domain connections |
nmem_habits | Workflow pattern suggestions | When user repeats similar action sequences |
Management Tools
| Tool | Purpose | When to Use |
|---|---|---|
nmem_health | Brain health diagnostics | Periodic checkup, before sharing brain |
nmem_stats | Brain statistics | Quick overview of memory counts |
nmem_version | Brain snapshots and rollback | Before risky operations, version checkpoints |
nmem_transplant | Transfer memories between brains | Cross-project knowledge sharing |
Workflow
At Session Start
- Call
nmem_contextto inject recent memories into your awareness - If user mentions a specific topic, call
nmem_recallwith that topic
During Conversation
- When a decision is made:
nmem_rememberwith type="decision" - When an error occurs:
nmem_rememberwith type="error" - When user states a preference:
nmem_rememberwith type="preference" - When asked about past events:
nmem_recallwith appropriate depth
At Session End
- Call
nmem_autowith action="process" on important conversation segments - This auto-extracts facts, decisions, errors, and TODOs
Examples
Remember a decision
nmem_remember(
content="Use PostgreSQL for production, SQLite for development",
type="decision",
tags=["database", "infrastructure"],
priority=8
)
Recall with spreading activation
nmem_recall(
query="database configuration for production",
depth=1,
max_tokens=500
)
Returns memories found via graph traversal, not keyword matching. Related memories (e.g., "deploy uses Docker with pg_dump backups") surface even without shared keywords.
Trace causal chains
nmem_recall(
query="why did the deployment fail last week?",
depth=2
)
Follows CAUSED_BY and LEADS_TO synapses to trace cause-and-effect chains.
Auto-capture from conversation
nmem_auto(
action="process",
text="We decided to switch from REST to GraphQL because the frontend needs flexible queries. The migration will take 2 sprints. TODO: update API docs."
)
Automatically extracts: 1 decision, 1 fact, 1 TODO.
Key Features
- Zero LLM dependency — Pure algorithmic: regex, graph traversal, Hebbian learning
- Spreading activation — Associative recall through neural graph, not keyword/vector search
- 20 synapse types — Temporal (BEFORE/AFTER), causal (CAUSED_BY/LEADS_TO), semantic (IS_A/HAS_PROPERTY), emotional (FELT/EVOKES), conflict (CONTRADICTS)
- Memory lifecycle — Short-term → Working → Episodic → Semantic with Ebbinghaus decay
- Contradiction detection — Auto-detects conflicting memories, deprioritizes outdated ones
- Hebbian learning — "Neurons that fire together wire together" — memory improves with use
- Temporal reasoning — Causal chain traversal, event sequences, temporal range queries
- Brain versioning — Snapshot, rollback, diff brain state
- Brain transplant — Transfer filtered knowledge between brains
- Vietnamese + English — Full bilingual support for extraction and sentiment
Depth Levels
| Depth | Name | Speed | Use Case |
|---|---|---|---|
| 0 | Instant | <10ms | Quick facts, recent context |
| 1 | Context | ~50ms | Standard recall (default) |
| 2 | Habit | ~200ms | Pattern matching, workflow suggestions |
| 3 | Deep | ~500ms | Cross-domain associations, causal chains |
Notes
- Memories are stored locally in SQLite at
~/.neuralmemory/brains/.db - No data is sent to external services (unless optional embedding provider is configured)
- Brain isolation: each brain is independent, no cross-contamination
nmem_rememberreturns fiber_id for reference tracking- Priority scale: 0 (trivial) to 10 (critical), default 5
- Memory types: fact, decision, preference, todo, insight, context, instruction, error, workflow, reference
Questions people ask
- How does recall differ from vector search?
- Queries activate time, entity, and concept neurons and traverse graph connections to find conceptually related memories, even without shared keywords or embedding overlap. Recall depth ranges from recent facts to cross-domain associations and causal chains.
- Can it capture and inject memories automatically?
- The OpenClaw plugin injects relevant context before each agent run and extracts facts, decisions, and TODOs afterward. Manual MCP configuration exposes all 63 tools but does not include those hooks.
- Where are memories stored, and are they sent externally?
- Each isolated brain is stored locally in SQLite under `~/.neuralmemory/brains/`. Data is not sent to external services unless an optional embedding provider is configured.
Related skills
Add persistent local memory with trust-aware recall and enforcement against injection, leaks, and poisoning.
Learn a topic through level checks, adaptive explanations, retrieval practice, and review across sessions.
Preserve inspectable state, memory, journal, and identity continuity across sessions with Notion-backed records.
Work through uncertain ideas iteratively to clarify options, tradeoffs, and a strategy.
Plan a term around deadlines, retrieval practice, coursework, grades, and exam readiness.