Every time I do anything with openclaw through the CLI it takes about 30-45 seconds to get a response from the system. It used to run within 5-10 secs when I started using the claw.
Another machine I have runs everything either instantaneously or within a few seconds. Both are running 5.12.
The slower one has a couple of better specs in the system. Both are running windows.
I have ran doctor --deep and tried reinstalling the gateway.
What can I do to make it run faster?
#All OpenClaw Commands Slow
1 messages · Page 1 of 1 (latest)
First split this into “CLI startup is slow” vs “gateway calls are slow”:
Measure-Command { openclaw --version }
Measure-Command { openclaw gateway status }
Measure-Command { openclaw status }
openclaw status --all
If openclaw --version itself takes 30-45s, that’s probably Windows/runtime startup: check Windows Defender/AV exclusions for your OpenClaw install + state dirs, confirm Node is healthy/current, and compare native Windows vs WSL2. The docs still recommend WSL2 as the more stable Windows path for the full CLI/Gateway experience: https://docs.openclaw.ai/platforms/windows
If --version is fast but gateway status / status is slow, focus on the gateway/service path:
openclaw gateway status --json
openclaw health --verbose
openclaw logs --follow
Look for slow connection/auth retries, gateway restart loops, repeated health probe failures, or a weird probe URL. Also worth checking Task Manager while a command hangs: if node.exe, schtasks.exe, or Defender is pegged, that’s a strong clue. Native Windows uses Scheduled Tasks first for gateway service management, and the docs call that out as an area with caveats.
Please paste:
- exact
openclaw --versionoutput from both machines - the three
Measure-Commandtimings openclaw gateway status --jsonfrom the slow one
Docs for the diagnostic ladder: https://docs.openclaw.ai/help/faq and https://docs.openclaw.ai/gateway/troubleshooting
OpenClaw 2026.5.12 (f066dd2)
Measure-Command { openclaw --version }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 455
Ticks : 4553463
TotalDays : 5.27021180555556E-06
TotalHours : 0.000126485083333333
TotalMinutes : 0.007589105
TotalSeconds : 0.4553463
TotalMilliseconds : 455.3463
Measure-Command { openclaw gateway status }
Days : 0
Hours : 0
Minutes : 0
Seconds : 8
Milliseconds : 173
Ticks : 81731655
TotalDays : 9.45968229166667E-05
TotalHours : 0.00227032375
TotalMinutes : 0.136219425
TotalSeconds : 8.1731655
TotalMilliseconds : 8173.1655
Measure-Command { openclaw status }
Days : 0
Hours : 0
Minutes : 2
Seconds : 11
Milliseconds : 101
Ticks : 1311011238
TotalDays : 0.00151737411805556
TotalHours : 0.0364169788333333
TotalMinutes : 2.18501873
TotalSeconds : 131.1011238
TotalMilliseconds : 131101.1238
{
"cli": {
"version": "2026.5.12",
"entrypoint": "[REDACTED]\AppData\Roaming\npm\node_modules\openclaw\openclaw.mjs"
},
"logFile": "[REDACTED]\AppData\Local\Temp\openclaw\openclaw-2026-05-16.log",
"service": {
"label": "Scheduled Task",
"loaded": true,
"loadedText": "registered",
"notLoadedText": "missing",
"command": {
"programArguments": [
"C:\Program Files\nodejs\node.exe",
"[REDACTED]\AppData\Roaming\npm\node_modules\openclaw\dist\index.js",
"gateway",
"--port",
"18789"
],
"environment": {
"OPENCLAW_GATEWAY_PORT": "18789"
},
"environmentValueSources": {
"TMPDIR": "inline",
"OPENCLAW_GATEWAY_PORT": "inline",
"OPENCLAW_SYSTEMD_UNIT": "inline",
"OPENCLAW_WINDOWS_TASK_NAME": "inline",
"OPENCLAW_SERVICE_MARKER": "inline",
"OPENCLAW_SERVICE_KIND": "inline",
"OPENCLAW_SERVICE_VERSION": "inline"
},
"sourcePath": "[REDACTED]\.openclaw\gateway.cmd"
},
"runtime": {
"status": "running",
"pid": 41508,
"detail": "Verified gateway listener detected on port 18789 even though schtasks did not report a running task.",
"state": "Ready",
"lastRunTime": "5/14/2026 11:03:32 PM",
"lastRunResult": "1"
},
"configAudit": {
"ok": true,
"issues": []
}
},
"config": {
"cli": {
"path": "C:\[REDACTED]\.openclaw\openclaw.json",
"exists": true,
"valid": true,
"controlUi": {
"allowInsecureAuth": false
}
},
"daemon": {
"path": "[REDACTED]\.openclaw\openclaw.json",
"exists": true,
"valid": true,
"controlUi": {
"allowInsecureAuth": true
}
}
},
"gateway": {
"bindMode": "loopback",
"bindHost": "127.0.0.1",
"port": 18789,
"portSource": "service args",
"probeUrl": "ws://127.0.0.1:18789",
"probeNote": "Loopback-only gateway; only local clients can connect."
},
"port": {
"port": 18789,
"status": "busy",
"listeners": [
{
"pid": 41508,
"address": "127.0.0.1:18789",
"command": "node.exe",
"commandLine": ""node" "[REDACTED]\npm\\node_modules\openclaw\openclaw.mjs" gateway --verbose"
}
],
"hints": []
},
"rpc": {
"ok": true,
"kind": "connect",
"capability": "connected_no_operator_scope",
"auth": {
"role": "operator",
"scopes": [],
"capability": "connected_no_operator_scope"
},
"server": {
"version": "2026.5.12",
"connId": "[REDACTED]"
},
"url": "ws://127.0.0.1:18789"
},
"extraServices": []
}
Good, this rules out “PowerShell/OpenClaw executable startup” pretty cleanly. --version at 455ms is healthy.
The 8s gateway status strongly suggests the gateway probe is waiting on a slow/failing target before it gets an answer. The 2m11s status is unusually high and probably multiple diagnostics/probes/log reads stacking up.
Can you run these on the slow machine?
Measure-Command { openclaw gateway status --no-probe }
openclaw gateway status --json
Measure-Command { openclaw health --timeout 2500 }
Measure-Command { openclaw status --timeout 2500 }
openclaw status --all
What I’m looking for:
- if
gateway status --no-probeis fast, the Windows service lookup is fine and the delay is the WebSocket/RPC probe - in
gateway status --json, check whether it’s probing more than one target, especially a stalegateway.remote.*URL or old localhost/port
- if
health --timeout 2500is slow/fails, the gateway itself is sluggish or auth/connect is retrying status --allis the useful safe report, but if it also takes 2 minutes, paste the top diagnosis bits and any warnings
Also compare this on the fast machine:
openclaw config get gateway
openclaw gateway status --json
If the slow machine has a stale remote gateway URL, dead Tailscale hostname, old port, or token/auth mismatch, status can spend most of its time waiting for those probes to time out. Docs for the exact status flags: https://docs.openclaw.ai/cli/status and gateway status flags: https://docs.openclaw.ai/cli/gateway
That snippet has two useful clues:
openclaw --versionis fast, so Node/npm startup is not the core problem.- The gateway service state is odd:
lastRunResult: "1"means the Scheduled Task last exited with an error, but OpenClaw still found a gateway listener on port18789at PID41508.
So I’d check whether you have a stale/manual gateway process, or a task that fails and then a fallback process keeps the port open.
Please run:
Get-CimInstance Win32_Process -Filter "ProcessId = 41508" | Select-Object ProcessId,ExecutablePath,CommandLine
Measure-Command { openclaw gateway status --no-probe }
openclaw gateway status --json
Also, your pasted JSON cuts off before the important rpc / probe section. That section should show which URL(s) are being probed and whether auth/read capability is slow or failing.
A clean reset to try after grabbing that info:
openclaw gateway restart
Measure-Command { openclaw gateway status }
Measure-Command { openclaw status --timeout 2500 }
If gateway status --no-probe is fast but regular gateway status is ~8s, the delay is definitely the connectivity/auth probe, not Windows service lookup. If the PID command shows a different install path or old OpenClaw path, then you likely have two installs/processes fighting over port 18789.
This is the smoking gun:
listener commandLine: "node" "...\openclaw.mjs" gateway --verbose
scheduled task command: "C:\Program Files
odejs
ode.exe" "...\dist\index.js" gateway --port 18789
rpc capability: connected_no_operator_scope
So the process actually holding port 18789 is not the Scheduled Task command from your service config. It looks like a manually started / stale verbose gateway process. That also explains the Scheduled Task lastRunResult: 1: the task may be failing because the port is already occupied, while the old process keeps answering.
Try this cleanup path:
Stop-Process -Id 41508
openclaw gateway restart
openclaw gateway status --json
Measure-Command { openclaw status --timeout 2500 }
After restart, the port.listeners[0].commandLine should match the Scheduled Task path, not openclaw.mjs gateway --verbose.
The second issue is auth scope:
capability: connected_no_operator_scope
scopes: []
That means the CLI can connect, but it is not authenticated with operator.read, so detail/status RPCs are limited. Check token config after the process cleanup:
openclaw config get gateway.auth.mode
openclaw config get gateway.auth.token
openclaw gateway status --require-rpc --json
If token auth is missing or drifted, run:
openclaw doctor --generate-gateway-token
openclaw gateway restart
Relevant docs: https://docs.openclaw.ai/cli/gateway and token/device drift notes at https://docs.openclaw.ai/gateway/troubleshooting
Can you tell me what you need me to do again?
Yep. Run these in PowerShell on the slow machine:
Stop-Process -Id 41508
openclaw gateway restart
openclaw gateway status --json
Measure-Command { openclaw status --timeout 2500 }
Then paste the new openclaw gateway status --json output.
What we’re checking: the old process on port 18789 was started as openclaw.mjs gateway --verbose, but your installed service expects dist\index.js gateway --port 18789. After restart, the listener command line should match the service path.
If status is still slow after that, also run: