#qmd collection add failed for memory-root-agent-ddgr: spawn qmd ENOENT

1 messages · Page 1 of 1 (latest)

prisma flint
#

I installed qmd and enabled and get this error " qmd collection add failed for memory-root-agent-ddgr: spawn qmd ENOENT" what does it mean?

willow heathBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

paper folioBOT
#

That error is basically “OpenClaw tried to run the qmd command, but your OS couldn’t find it.”

  • spawn qmd ENOENT = Node.js attempted to spawn an executable named qmd, and got ENOENT (“No such file or directory”) → almost always means qmd isn’t on the PATH for the process that’s running OpenClaw (often the gateway service).

Common causes:

  • qmd is installed, but only in your interactive shell PATH (Terminal), not in the systemd/launchd service environment.
  • qmd was installed for a different user than the one running the gateway.
  • You’re running OpenClaw in Docker/VM, but installed qmd on the host (or vice‑versa).

Quick checks (run on the same machine/user that runs the gateway):

openclaw --version
command -v qmd
qmd --version

If command -v qmd prints nothing, the fix is: install qmd in a global location (or adjust the gateway service PATH so it can see it), then restart the gateway.

#

If you paste the output of those 3 commands + tell me your OS (macOS/Linux/Windows) and whether you’re running the gateway as a service, I can tell you the exact next step.

prisma flint
#

probably a path thing, here is where qmd is installed /home/node/.npm-global/bin/qmd

paper folioBOT
#

Yep — that confirms it’s a PATH/env problem.

spawn qmd ENOENT means: the OpenClaw process tried to run qmd, but in the environment the gateway is running under, qmd isn’t found on PATH (even though it exists at /home/node/.npm-global/bin/qmd).

Two good fixes:

  1. Tell OpenClaw the absolute path to qmd (avoids PATH issues entirely)
    In your OpenClaw config, set:
memory: {
  qmd: {
    command: "/home/node/.npm-global/bin/qmd"
  }
}

(Then restart the gateway.)

#
  1. Make sure the gateway service PATH includes it
    If the gateway is running under systemd/docker/pm2/etc, it often won’t load your shell profile, so /home/node/.npm-global/bin never gets added.

Quick sanity checks:

ls -l /home/node/.npm-global/bin/qmd
/home/node/.npm-global/bin/qmd --version

If you tell me how you’re running the gateway (docker container? openclaw gateway install / systemd? just in a terminal?), I can point you to the exact place to set PATH or the config.

prisma flint
#

docker container

paper folioBOT
#

If OpenClaw is running inside a Docker container, spawn qmd ENOENT usually boils down to one of these:

  1. qmd is not installed inside the same container as OpenClaw (installing it on the host won’t help), or
  2. qmd is in the container, but the gateway process’ PATH doesn’t include /home/node/.npm-global/bin.

Fastest fix (Docker-friendly): set an absolute command path

In your OpenClaw config, set:

memory: {
  qmd: {
    command: "/home/node/.npm-global/bin/qmd"
  }
}

Then restart/recreate the container.

Verify from inside the container

#

Run:

docker exec -it <openclaw_container> /home/node/.npm-global/bin/qmd --version
docker exec -it <openclaw_container> sh -lc 'command -v qmd; echo $PATH'

Alternative fix: add PATH in docker-compose

services:
  openclaw:
    environment:
      PATH: /home/node/.npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

One key question: is qmd installed in the same container that’s running the gateway, or in a different container? If it’s a different container, OpenClaw won’t be able to spawn it at all (you’ll need it in the gateway container).

prisma flint
#

ok I added that path in the openclaw.json and it seems to be working now as there is no errors. How can I see the status of qmd?

paper folioBOT
#

QMD usually doesn’t run as a “service” (unless you enabled an optional daemon layer) — OpenClaw typically just spawns the qmd CLI on-demand. So “status” is basically: can qmd see its index + collections, and do queries work.

1) Check QMD directly inside the container

If qmd isn’t on PATH, use the absolute path you configured:

docker exec -it <openclaw_container> /home/node/.npm-global/bin/qmd status
docker exec -it <openclaw_container> /home/node/.npm-global/bin/qmd collection list

2) Make sure you’re looking at the same index OpenClaw uses

OpenClaw often calls qmd with an --index ... argument (so running plain qmd status might show “empty” even though OpenClaw is fine).

Easiest way: grep the container logs for the exact qmd invocation, then reuse that --index:

docker logs <openclaw_container> 2>&1 | grep -i qmd
# then run: qmd --index <that-path> status / collection list