openclaw - 💡(How to fix) Fix memory.qmd.update.embedTimeoutMs default (120 s) is too low for local GGUF; error message doesn't surface the fix [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#74204Fetched 2026-04-30 06:27:26
View on GitHub
Comments
1
Participants
2
Timeline
2
Reactions
2
Timeline (top)
commented ×1cross-referenced ×1

Error Message

After enabling hybrid search (searchMode: "query"), the gateway emits this warning repeatedly every 2–4 minutes:

Root Cause

The GGUF embedding model takes 3–4 minutes on a 4-core CPU to embed a 37-file workspace. The default memory.qmd.update.embedTimeoutMs is 120 s — less than the actual embed duration.

The fix (memory.qmd.update.embedTimeoutMs: 600000) is only discoverable via openclaw config schema or the memory config reference page. The error message does not mention it.

Fix Action

Workaround

{
  memory: {
    qmd: {
      update: {
        embedTimeoutMs: 600000,  // 10 minutes — sufficient for ~40 files on 4-core CPU
      },
    },
  },
}

Or use a smaller/faster GGUF model via QMD_EMBED_MODEL:

export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"

Code Example

{"subsystem":"memory","message":"qmd embed failed (boot): Error: qmd embed timed out after 120000ms; backing off for 60s"}
{"subsystem":"memory","message":"qmd embed failed (interval): Error: qmd embed timed out after 120000ms; backing off for 120s"}

---

qmd embed timed out after 120000ms — consider increasing memory.qmd.update.embedTimeoutMs (current default: 120000)

---

{
  memory: {
    qmd: {
      update: {
        embedTimeoutMs: 600000,  // 10 minutes — sufficient for ~40 files on 4-core CPU
      },
    },
  },
}

---

export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"
RAW_BUFFERClick to expand / collapse

Environment

  • OpenClaw version: 2026.4.25
  • QMD version: 2.1.0 (bab86d5)
  • Platform: Ubuntu 24.04, GCP e2-standard-4 (4 vCPU, 16 GB RAM)
  • Workspace size: 37+ Markdown files in memory root + memory/ tree
  • GGUF model: default (embeddinggemma-300m-qat-Q8_0.gguf, ~0.6 GB, auto-downloaded)
  • searchMode: query (hybrid BM25 + vector)

Observed behavior

After enabling hybrid search (searchMode: "query"), the gateway emits this warning repeatedly every 2–4 minutes:

{"subsystem":"memory","message":"qmd embed failed (boot): Error: qmd embed timed out after 120000ms; backing off for 60s"}
{"subsystem":"memory","message":"qmd embed failed (interval): Error: qmd embed timed out after 120000ms; backing off for 120s"}

The embed process runs at 100–186% CPU on 4 vCPU for ~2 minutes before being killed. Peak RAM during GGUF model load: 9.6 GB. The embed never completes — every attempt times out at exactly 120 s. Vector search is effectively disabled.

Root cause

The GGUF embedding model takes 3–4 minutes on a 4-core CPU to embed a 37-file workspace. The default memory.qmd.update.embedTimeoutMs is 120 s — less than the actual embed duration.

The fix (memory.qmd.update.embedTimeoutMs: 600000) is only discoverable via openclaw config schema or the memory config reference page. The error message does not mention it.

Inconsistency with built-in engine

agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds correctly differentiates:

  • 600 s for local/self-hosted providers (local, ollama, lmstudio)
  • 120 s for hosted providers (OpenAI, Gemini, etc.)

memory.qmd.update.embedTimeoutMs applies the same 120 s default regardless of whether the embedding model is a local GGUF or a hosted API. For local GGUF workloads, 120 s is consistently insufficient on commodity hardware.

Suggested fixes (pick one or combine)

  1. Increase the default for embedTimeoutMs to 600 s (matching the built-in engine's local-provider default), or detect when searchMode is vsearch/query with the default GGUF model and apply a longer default automatically.

  2. Improve the error message to mention the fix:

    qmd embed timed out after 120000ms — consider increasing memory.qmd.update.embedTimeoutMs (current default: 120000)
  3. Add to the QMD troubleshooting docs a dedicated entry:

    qmd embed timed out after 120000ms? Increase memory.qmd.update.embedTimeoutMs. Default is 120 000 ms. On commodity hardware with the default GGUF model and a 30–50 file workspace, embedding takes 3–5 minutes. Set to 600000 or higher.

Workaround

{
  memory: {
    qmd: {
      update: {
        embedTimeoutMs: 600000,  // 10 minutes — sufficient for ~40 files on 4-core CPU
      },
    },
  },
}

Or use a smaller/faster GGUF model via QMD_EMBED_MODEL:

export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"

Additional context

The gateway remains healthy throughout (Slack connected, Atlassian/GWS MCP tools working). The embed failures are WARN-level and non-blocking. However, with the default 120 s timeout, vector search is effectively permanently disabled on any commodity host with a medium or larger workspace, with no clear path to resolution from the error message alone.

extent analysis

TL;DR

Increase the memory.qmd.update.embedTimeoutMs value to at least 600000 ms to prevent qmd embed timeouts.

Guidance

  • Verify the current value of memory.qmd.update.embedTimeoutMs and adjust it according to the workspace size and available computational resources.
  • Consider using a smaller or faster GGUF model via the QMD_EMBED_MODEL environment variable as a temporary workaround.
  • Review the QMD troubleshooting documentation for additional guidance on resolving qmd embed timed out errors.
  • Monitor the system's CPU and RAM usage to ensure the increased timeout value does not cause performance issues.

Example

To increase the embedTimeoutMs value, add the following configuration:

{
  memory: {
    qmd: {
      update: {
        embedTimeoutMs: 600000,  // 10 minutes — sufficient for ~40 files on 4-core CPU
      },
    },
  },
}

Notes

The increased timeout value may need to be adjusted based on the specific workspace size and computational resources. It is essential to monitor the system's performance and adjust the value as needed to prevent timeouts and ensure smooth operation.

Recommendation

Apply the workaround by increasing the memory.qmd.update.embedTimeoutMs value to at least 600000 ms, as this is a straightforward and effective solution to prevent qmd embed timeouts and enable vector search functionality.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING