OpenClaw Error: spawn docker ENOENT – Cause, Quick Fix, and Complete Solution

Quick Answer

If you see the error Error: spawn docker ENOENT while setting up OpenClaw, it means Docker is not installed or not available in the system PATH on the OpenClaw machine. Installing Docker and ensuring it is properly configured immediately resolves the issue.

Error Observed During OpenClaw Setup

During the OpenClaw setup process, the gateway and agents started normally. However, the system failed as soon as an embedded agent attempted to run. At that point, OpenClaw stopped unexpectedly and logged the following error:

7:02:44 info ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██ ██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██ ██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ 🦞 OPENCLAW 🦞 07:02:44 info Slack: ok (291ms) 07:02:44 info Agents: main (default) 07:02:44 info Heartbeat interval: 30m (main) 07:02:44 info Session store (main): /Users/openclaw/.openclaw/agents/main/sessions/sessions.json (2 entries) 07:02:44 info – agent:main:slack:channel:c0adm15rs4d (0m ago) 07:02:44 info – agent:main:main (77m ago) 07:02:45 info gateway/ws {“subsystem”:”gateway/ws”} ⇄ res ✓ channels.status 530ms conn=940529c2…0028 id=91416835…221d 07:02:45 info Updated ~/.openclaw/openclaw.json 07:02:45 info Backup: ~/.openclaw/openclaw.json.bak 07:02:45 info gateway/reload {“subsystem”:”gateway/reload”} config change detected; evaluating reload (meta.lastTouchedAt, wizard.lastRunAt, models.providers.ucartz.models) 07:02:45 warn gateway/reload {“subsystem”:”gateway/reload”} config change requires gateway restart (meta.lastTouchedAt) 07:02:45 info gateway {“subsystem”:”gateway”} signal SIGUSR1 received 07:02:45 info gateway {“subsystem”:”gateway”} received SIGUSR1; restarting 07:02:45 info gmail-watcher {“subsystem”:”gmail-watcher”} gmail watcher stopped 07:02:46 info gateway/canvas {“subsystem”:”gateway/canvas”} canvas host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /Users/openclaw/.openclaw/canvas) 07:02:46 info gateway/heartbeat {“subsystem”:”gateway/heartbeat”} {“intervalMs”:1800000} heartbeat: started 07:02:46 info gateway {“subsystem”:”gateway”} agent model: ucartz/gpt-oss:20b 07:02:46 info gateway {“subsystem”:”gateway”} listening on ws://127.0.0.1:18789 (PID 28263) 07:02:46 info gateway {“subsystem”:”gateway”} listening on ws://[::1]:18789 07:02:46 info gateway {“subsystem”:”gateway”} log file: /tmp/openclaw/openclaw-2026-02-09.log 07:02:46 info browser/service {“subsystem”:”browser/service”} Browser control service ready (profiles=2) 07:02:46 info gateway/channels/slack {“subsystem”:”gateway/channels/slack”} [default] starting provider 07:02:46 info cron {“module”:”cron”,”storePath”:”/Users/openclaw/.openclaw/cron/jobs.json”} {“enabled”:true,”jobs”:0,”nextWakeAtMs”:null} cron: started 07:02:46 info gateway/channels/slack {“subsystem”:”gateway/channels/slack”} slack channels resolved: C0ADM15RS4D→C0ADM15RS4D 07:02:47 info bonjour: advertised gateway fqdn=Ebin’s MacBook Pro (2) (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=announcing 07:02:47 info gateway/channels/slack {“subsystem”:”gateway/channels/slack”} slack socket mode connected 07:02:51 debug plugins {“subsystem”:”plugins”} plugin CLI register skipped (memory-core): command already registered (memory) 07:03:00 debug diagnostic {“subsystem”:”diagnostic”} lane enqueue: lane=session:agent:main:slack:channel:c0adm15rs4d queueSize=1 07:03:00 debug diagnostic {“subsystem”:”diagnostic”} lane dequeue: lane=session:agent:main:slack:channel:c0adm15rs4d waitMs=5 queueSize=0 07:03:00 debug diagnostic {“subsystem”:”diagnostic”} lane enqueue: lane=main queueSize=1 07:03:00 debug diagnostic {“subsystem”:”diagnostic”} lane dequeue: lane=main waitMs=5 queueSize=0 07:03:01 debug agent/embedded {“subsystem”:”agent/embedded”} embedded run start: runId=4fa553eb-914e-419a-8c1b-4c54dbe8b6da sessionId=9167e31e-991f-4ff1-a7eb-980e8164b460 provider=ucartz model=gpt-oss:20b thinking=low messageChannel=slack 07:03:01 error [openclaw] Uncaught exception: Error: spawn docker ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:285:19) at onErrorNT (node:internal/child_process:483:16) at processTicksAndRejections (node:internal/process/task_queues:90:21)

Because the failure occurred after initialization, the logs initially appeared healthy. Nevertheless, the runtime dependency check failed once Docker execution was required.

What Does spawn docker ENOENT Mean?

To understand this error, it helps to break it down:

  • spawn docker means OpenClaw is trying to run a Docker command
  • ENOENT means the operating system cannot find the Docker executable

In other words, OpenClaw expects Docker to be available but cannot locate it on the system. Therefore, the process terminates instead of continuing safely.

Root Cause

The issue occurred due to two directly related reasons:

  • Docker was not installed on the OpenClaw machine
  • Because Docker was missing, the OpenClaw gateway crashed when it attempted to spawn a Docker process

When embedded agent execution began, OpenClaw immediately called Docker. Since the binary did not exist, Node.js threw the spawn docker ENOENT exception. As a result, the gateway restarted and failed repeatedly.

Solution: Install and Verify Docker

Step 1: Install Docker

First, install Docker based on your operating system:

  • macOS: Install Docker Desktop
  • Linux: Install Docker Engine using the official package manager
  • Windows: Install Docker Desktop with WSL2 enabled

Once installation finishes, make sure Docker starts automatically.

Step 2: Verify Docker Installation

Next, confirm that the system can access Docker:

  • Run docker --version
  • Run docker ps

If both commands work without errors, Docker is installed correctly and available in PATH.

Step 3: Restart OpenClaw

After Docker becomes available:

  • Restart the OpenClaw gateway
  • Restart all configured OpenClaw agents

Now OpenClaw can spawn containers successfully, and the gateway remains stable.

Why Docker Is Required for OpenClaw

OpenClaw depends on Docker for several core functions. For example, Docker allows OpenClaw to:

  • Isolate LLM execution environments
  • Run embedded agents securely
  • Manage tool dependencies consistently
  • Maintain predictable runtime behavior

Without Docker, OpenClaw cannot execute container-based workflows. Consequently, runtime failures occur during agent execution.

Final Status After Fix

After installing Docker and restarting services:

  • OpenClaw started normally
  • The gateway stopped crashing
  • Embedded agents executed successfully
  • Slack and gateway integrations worked as expected

Therefore, the spawn docker ENOENT error no longer appeared.

Conclusion

f you encounter the spawn docker ENOENT error during OpenClaw setup, do not troubleshoot OpenClaw itself first. Check Docker installation immediately. In most cases, installing Docker resolves the issue within minutes.

This is a common setup oversight and an easy fix once identified.

Ithal P. Rajagopal
Ithal P. Rajagopal

Hi, I'm Ithal! I write tech and hosting blogs at Ucartz.com, where I share insights, tips, and the latest updates from the world of web hosting and technology. Whether it's about server setups, control panels, or tools to power your online presence, I break things down in a way that's easy to understand—even if you're just starting out.