openclaw - 💡(How to fix) Fix [Bug]: memory: qmd binary unavailable via subprocess spawn (`/opt/homebrew/bin/qmd` ENOENT) despite binary existing in shell, causing fallback to builtin backend [1 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#63055Fetched 2026-04-09 07:59:05
View on GitHub
Comments
0
Participants
1
Timeline
1
Reactions
0
Author
Participants
Timeline (top)
labeled ×1

OpenClaw memory emits a warning that the qmd binary is unavailable and falls back to the builtin memory backend:

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT

This appears to happen even though the qmd binary exists and is callable from an interactive shell. The failure seems to occur specifically when OpenClaw tries to spawn the binary from its own runtime/process context.

Error Message

Warning log

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT

openclaw memory status --deep

[lcm] Ignoring sessions matching 1 pattern(s): agent:*:cron:** [lcm] Plugin loaded (enabled=true, db=/Users/sompisjunsui/.openclaw/lcm.db, threshold=0.75) [lcm] Compaction summarization model: anthropic/claude-haiku-4-5 (override)

🦞 OpenClaw 2026.4.8 (9ece252) — I can run local, remote, or purely on vibes—results may vary with DNS.

│ ◇ │ ◇ Memory Search (main) Provider: qmd (requested: qmd) Model: qmd Sources: memory Indexed: 27/0 files · 27 chunks Dirty: no Store: ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite Workspace: ~/.openclaw/workspaces Dreaming: off Embeddings: unavailable Embeddings error: QMD status probe failed: qmd status timed out after 5000ms By source: memory · 27/0 files · 27 chunks Vector: unavailable Vector error: QMD status probe failed: qmd status timed out after 5000ms Batch: disabled (failures 0/0) Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced Recall path: ~/.openclaw/workspaces/memory/.dreams/short-term-recall.json QMD audit: /.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite · 8613888 bytes · 3 collections Issues: memory directory missing (/.openclaw/workspaces/memory)

Memory Search (writer) Provider: qmd (requested: qmd) Model: qmd Sources: memory Indexed: 27/0 files · 27 chunks Dirty: no Store: ~/.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite Workspace: ~/.openclaw/workspaces/writer Dreaming: off Embeddings: unavailable Embeddings error: QMD status probe failed: qmd status timed out after 5000ms By source: memory · 27/0 files · 27 chunks Vector: unavailable Vector error: QMD status probe failed: qmd status timed out after 5000ms Batch: disabled (failures 0/0) Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced Recall path: ~/.openclaw/workspaces/writer/memory/.dreams/short-term-recall.json QMD audit: /.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite · 7901184 bytes · 3 collections Issues: memory directory missing (/.openclaw/workspaces/writer/memory)

Evidence collected

  • Binary reportedly exists at /opt/homebrew/bin/qmd
  • Binary is callable from shell
  • OpenClaw still receives ENOENT when spawning it internally
  • Wrapper/path-variant attempts did not resolve the issue
  • Temporary workaround is fallback to builtin memory backend

Root Cause

Impact:

  • OpenClaw memory does not use the intended qmd backend
  • System silently degrades to builtin memory behavior
  • May cause backend inconsistency across environments
  • Makes troubleshooting difficult because the path appears valid from the shell but fails only in OpenClaw's runtime context

Fix Action

Fix / Workaround

Evidence collected

  • Binary reportedly exists at /opt/homebrew/bin/qmd
  • Binary is callable from shell
  • OpenClaw still receives ENOENT when spawning it internally
  • Wrapper/path-variant attempts did not resolve the issue
  • Temporary workaround is fallback to builtin memory backend

Code Example

### Warning log

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT


### openclaw memory status --deep

[lcm] Ignoring sessions matching 1 pattern(s): agent:*:cron:**
[lcm] Plugin loaded (enabled=true, db=/Users/sompisjunsui/.openclaw/lcm.db, threshold=0.75)
[lcm] Compaction summarization model: anthropic/claude-haiku-4-5 (override)

🦞 OpenClaw 2026.4.8 (9ece252)I can run local, remote, or purely on vibes—results may vary with DNS.


Memory Search (main)
Provider: qmd (requested: qmd)
Model: qmd
Sources: memory
Indexed: 27/0 files · 27 chunks
Dirty: no
Store: ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite
Workspace: ~/.openclaw/workspaces
Dreaming: off
Embeddings: unavailable
Embeddings error: QMD status probe failed: qmd status timed out after 5000ms
By source:
  memory · 27/0 files · 27 chunks
Vector: unavailable
Vector error: QMD status probe failed: qmd status timed out after 5000ms
Batch: disabled (failures 0/0)
Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced
Recall path: ~/.openclaw/workspaces/memory/.dreams/short-term-recall.json
QMD audit: ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite · 8613888 bytes · 3 collections
Issues:
  memory directory missing (~/.openclaw/workspaces/memory)

Memory Search (writer)
Provider: qmd (requested: qmd)
Model: qmd
Sources: memory
Indexed: 27/0 files · 27 chunks
Dirty: no
Store: ~/.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite
Workspace: ~/.openclaw/workspaces/writer
Dreaming: off
Embeddings: unavailable
Embeddings error: QMD status probe failed: qmd status timed out after 5000ms
By source:
  memory · 27/0 files · 27 chunks
Vector: unavailable
Vector error: QMD status probe failed: qmd status timed out after 5000ms
Batch: disabled (failures 0/0)
Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced
Recall path: ~/.openclaw/workspaces/writer/memory/.dreams/short-term-recall.json
QMD audit: ~/.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite · 7901184 bytes · 3 collections
Issues:
  memory directory missing (~/.openclaw/workspaces/writer/memory)

### Evidence collected
- Binary reportedly exists at `/opt/homebrew/bin/qmd`
- Binary is callable from shell
- OpenClaw still receives `ENOENT` when spawning it internally
- Wrapper/path-variant attempts did not resolve the issue
- Temporary workaround is fallback to builtin memory backend
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

OpenClaw memory emits a warning that the qmd binary is unavailable and falls back to the builtin memory backend:

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT

This appears to happen even though the qmd binary exists and is callable from an interactive shell. The failure seems to occur specifically when OpenClaw tries to spawn the binary from its own runtime/process context.

Steps to reproduce

  1. Install qmd at /opt/homebrew/bin/qmd
  2. Verify it exists and is runnable from the shell, for example:
    • ls -l /opt/homebrew/bin/qmd
    • /opt/homebrew/bin/qmd --help
  3. Start or run OpenClaw with memory functionality enabled
  4. Trigger a memory operation that attempts to use the qmd backend
  5. Observe OpenClaw logs

Steps to reproduce

  1. Install qmd at /opt/homebrew/bin/qmd
  2. Verify it exists and is runnable from the shell, for example:
    • ls -l /opt/homebrew/bin/qmd
    • /opt/homebrew/bin/qmd --help
  3. Start or run OpenClaw with memory functionality enabled
  4. Trigger a memory operation that attempts to use the qmd backend
  5. Observe OpenClaw logs

Expected behavior

OpenClaw should successfully spawn /opt/homebrew/bin/qmd and use the qmd memory backend when the binary exists and is executable.

Actual behavior

OpenClaw logs a warning and falls back to the builtin backend instead:

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT

The system continues functioning, but not with the intended qmd backend.

OpenClaw version

2026.4.8

Operating system

macOS 26.4

Install method

npm

Model

openai-codex/gpt-5.4

Provider / routing chain

openclaw->openai-codex/gpt-5.4

Additional provider/model setup details

No response

Logs, screenshots, and evidence

### Warning log

warn memory {"subsystem":"memory"} qmd binary unavailable (/opt/homebrew/bin/qmd); falling back to builtin: spawn /opt/homebrew/bin/qmd ENOENT


### openclaw memory status --deep

[lcm] Ignoring sessions matching 1 pattern(s): agent:*:cron:**
[lcm] Plugin loaded (enabled=true, db=/Users/sompisjunsui/.openclaw/lcm.db, threshold=0.75)
[lcm] Compaction summarization model: anthropic/claude-haiku-4-5 (override)

🦞 OpenClaw 2026.4.8 (9ece252) — I can run local, remote, or purely on vibes—results may vary with DNS.

Memory Search (main)
Provider: qmd (requested: qmd)
Model: qmd
Sources: memory
Indexed: 27/0 files · 27 chunks
Dirty: no
Store: ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite
Workspace: ~/.openclaw/workspaces
Dreaming: off
Embeddings: unavailable
Embeddings error: QMD status probe failed: qmd status timed out after 5000ms
By source:
  memory · 27/0 files · 27 chunks
Vector: unavailable
Vector error: QMD status probe failed: qmd status timed out after 5000ms
Batch: disabled (failures 0/0)
Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced
Recall path: ~/.openclaw/workspaces/memory/.dreams/short-term-recall.json
QMD audit: ~/.openclaw/agents/main/qmd/xdg-cache/qmd/index.sqlite · 8613888 bytes · 3 collections
Issues:
  memory directory missing (~/.openclaw/workspaces/memory)

Memory Search (writer)
Provider: qmd (requested: qmd)
Model: qmd
Sources: memory
Indexed: 27/0 files · 27 chunks
Dirty: no
Store: ~/.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite
Workspace: ~/.openclaw/workspaces/writer
Dreaming: off
Embeddings: unavailable
Embeddings error: QMD status probe failed: qmd status timed out after 5000ms
By source:
  memory · 27/0 files · 27 chunks
Vector: unavailable
Vector error: QMD status probe failed: qmd status timed out after 5000ms
Batch: disabled (failures 0/0)
Recall store: 0 entries · 0 promoted · 0 concept-tagged · 0 spaced
Recall path: ~/.openclaw/workspaces/writer/memory/.dreams/short-term-recall.json
QMD audit: ~/.openclaw/agents/writer/qmd/xdg-cache/qmd/index.sqlite · 7901184 bytes · 3 collections
Issues:
  memory directory missing (~/.openclaw/workspaces/writer/memory)

### Evidence collected
- Binary reportedly exists at `/opt/homebrew/bin/qmd`
- Binary is callable from shell
- OpenClaw still receives `ENOENT` when spawning it internally
- Wrapper/path-variant attempts did not resolve the issue
- Temporary workaround is fallback to builtin memory backend

Impact and severity

Severity: Medium

Impact:

  • OpenClaw memory does not use the intended qmd backend
  • System silently degrades to builtin memory behavior
  • May cause backend inconsistency across environments
  • Makes troubleshooting difficult because the path appears valid from the shell but fails only in OpenClaw's runtime context

Additional information

No response

extent analysis

TL;DR

The most likely fix is to ensure the qmd binary is accessible and executable by the user running the OpenClaw process, potentially by adjusting the PATH environment variable or file system permissions.

Guidance

  1. Verify file system permissions: Check the ownership and permissions of the /opt/homebrew/bin/qmd binary to ensure it is executable by the user running OpenClaw.
  2. Check the PATH environment variable: Confirm that the directory containing the qmd binary is included in the PATH environment variable for the user running OpenClaw.
  3. Test with an absolute path: Try specifying the absolute path to the qmd binary in OpenClaw's configuration to rule out any issues with the PATH variable.
  4. Inspect OpenClaw's runtime environment: Investigate the environment variables and working directory of the OpenClaw process to ensure they match the expectations of the qmd binary.

Example

No specific code snippet is provided, but an example of checking file system permissions using the ls command is:

ls -l /opt/homebrew/bin/qmd

This command will display the ownership and permissions of the qmd binary.

Notes

The issue may be related to the difference in environment or permissions between the interactive shell and the OpenClaw runtime context. Further investigation into the specifics of the OpenClaw process and its environment may be necessary to resolve the issue.

Recommendation

Apply a workaround by adjusting the file system permissions or the PATH environment variable to ensure the qmd binary is accessible and executable by the OpenClaw process. This is recommended because the issue appears to be related to the runtime environment of OpenClaw rather than a problem with the qmd binary itself.

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…

FAQ

Expected behavior

OpenClaw should successfully spawn /opt/homebrew/bin/qmd and use the qmd memory backend when the binary exists and is executable.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING