I recently reconfigured my AI assistant setup and wanted to document how I’m handling memory embeddings. If you’re running OpenClaw (or Clawdbot) and want your assistant to actually remember things across sessions, this is the configuration that works for me.
The Problem
Out of the box, most AI assistants treat every conversation as a blank slate. They don’t remember that I prefer JSON over YAML, that I’m in Guatemala (UTC-6), or that I asked them to follow up on something yesterday. That’s not very helpful for a “personal” assistant.
The Solution: Local Embeddings
OpenClaw supports semantic memory search through local embeddings. This means:
- No API calls to OpenAI for embeddings (free!)
- Your data stays local
- Searches work even offline
- Fast retrieval of relevant context
My Configuration
Here’s the memorySearch section from my clawdbot.json:
{
"agents": {
"defaults": {
"memorySearch": {
"enabled": true,
"sources": ["memory", "sessions"],
"experimental": {
"sessionMemory": true
},
"provider": "local",
"fallback": "none",
"local": {
"modelPath": "hf:nomic-ai/nomic-embed-text-v1.5-GGUF/nomic-embed-text-v1.5.Q8_0.gguf"
}
}
}
}
}
Breaking It Down
sources: [“memory”, “sessions”]
- memory: Searches my
MEMORY.mdand daily logs inmemory/YYYY-MM-DD.md - sessions: Searches past conversation transcripts
This is the key to cross-session memory. When I ask “What did we work on yesterday?” it can actually search and find the answer.
provider: “local”
Uses a local GGUF model instead of calling OpenAI’s API. The model downloads automatically on first use (~100MB for Q8_0).
local.modelPath
I’m using Nomic Embed Text v1.5 (Q8_0 quantization). It’s specifically trained for retrieval tasks and performs well on the MTEB benchmark. The hf: prefix auto-downloads from HuggingFace.
Other options:
Q8_0: ~100MB, excellent qualityQ4_K_M: ~60MB, very good quality, faster
experimental.sessionMemory: true
Enables searching within the current session’s conversation history. Useful when you ask something 50 messages ago and don’t want to scroll back.
Memory Files Structure
I keep durable facts organized:
~/clawd/
├── MEMORY.md # Main memory (profile, preferences)
├── memory/
│ ├── 2026-01-28.md # Daily logs
│ ├── 2026-01-29.md
│ ├── 2026-01-30.md
│ └── reading-list.md # Other persistent notes
The assistant automatically searches these when queries reference prior work, dates, people, or TODOs.
How It Works in Practice
When I ask something like “What PRs did I need to review yesterday?”, the assistant:
- Calls
memory_searchwith my query - Gets relevant snippets from my memory files
- Uses those snippets to formulate an accurate answer
This happens automatically — I don’t have to manually tag or categorize anything.
Storage and Caching
Embeddings are cached at ~/.clawdbot/embeddings/ so subsequent searches are fast. The cache is invalidated when source files change, so you’re always searching current data.
Why This Matters
For an AI assistant to be truly useful, it needs context. Not just the immediate conversation, but the accumulated knowledge of who you are, what you’re working on, and what you’ve done before. Local embeddings make this practical without:
- Sending your data to third parties
- Paying per-token embedding fees
- Requiring internet connectivity
Try It Yourself
If you’re running OpenClaw, add the memorySearch config above to your clawdbot.json, create a MEMORY.md in your workspace, and start logging daily notes. The difference between a stateless chatbot and an assistant that remembers is night and day.
Want the full configuration reference? I made a secret gist with all the details.