#Windows Scheduled Task can't find ngrok for voice-call plugin (spawn ngrok ENOENT)
1 messages Β· Page 1 of 1 (latest)
spawn ngrok ENOENT is coming from the voice-call plugin literally doing spawn("ngrok", β¦) (no config option for a full path right now). So the fix is: make ngrok resolvable in the PATH of the Gateway process (the Scheduled Task), or bypass the pluginβs tunnel and provide your own publicUrl.
Why this happens on Windows Scheduled Task
When you install the Gateway as a Scheduled Task, OpenClaw writes a task script:
%USERPROFILE%\.openclaw\gateway.cmd(or%USERPROFILE%\.openclaw-<profile>\gateway.cmd)
That script contains set ... lines (including a pinned PATH=... from the moment you installed the service). If you updated PATH afterwards, the task can still be running with the old pinned PATH.
Fix option A (recommended): reinstall the Gateway task after PATH is correct
- Open a brand new PowerShell window (important), then verify ngrok resolves:
Get-Command ngrok
ngrok version
- Reinstall the scheduled task so
gateway.cmdgets regenerated with the correct PATH:
openclaw gateway install --force
openclaw gateway restart
Fix option B: edit gateway.cmd to add ngrok to PATH
Open %USERPROFILE%\.openclaw\gateway.cmd and either:
- append
;C:\ngrokto the existingset PATH=...line, or - add a line near the top:
set "PATH=%PATH%;C:\ngrok"
Then restart the task (openclaw gateway restart).
Fix option C: bypass the plugin tunnel completely (no ngrok spawn)
Run ngrok yourself (with full path), and set publicUrl in config:
{
plugins: {
entries: {
"voice-call": {
config: {
publicUrl: "https://<your-domain>.ngrok-free.app/voice/webhook",
tunnel: { provider: "none" }
}
}
}
}
}