4 min read
OpenClaw Memory Embeddings: How I Configure My AI Assistant to Remember Everything

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.md and daily logs in memory/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 quality
  • Q4_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:

  1. Calls memory_search with my query
  2. Gets relevant snippets from my memory files
  3. 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.