gateway-watchdog
by bryantegomoh
Production-grade bash watchdog for the OpenClaw gateway. Runs via launchd every 5 minutes. Handles boot grace periods, progressive retry with backoff, port-level fallback checks, stale PID detection, and restart cooldowns — preventing restart loops while keeping the gateway reliably alive.
安装
claude skill add --url github.com/openclaw/skills/tree/main/skills/bryantegomoh/gateway-watchdog-v2文档
gateway-watchdog
Keeps the OpenClaw gateway alive without killing it during startup. Five defensive layers prevent false restarts and restart loops.
How It Works
- HTTP check — pings
http://127.0.0.1:18789; exits immediately if the gateway responds - Boot grace — if the process is <180s old, waits without acting (avoids killing a booting gateway)
- Port check — if the port is bound but HTTP is slow, waits up to 15s for recovery
- Progressive retry — 3 retries at 15s / 30s / 45s intervals
- Cooldown — enforces a 10-minute gap between restarts to prevent loops
Logs go to ~/.openclaw/logs/watchdog.log.
Setup (macOS launchd)
Create ~/Library/LaunchAgents/com.openclaw.gateway-watchdog.plist:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.openclaw.gateway-watchdog</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/path/to/skills/gateway-watchdog/scripts/gateway-watchdog.sh</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Then load it:
bash
launchctl load ~/Library/LaunchAgents/com.openclaw.gateway-watchdog.plist
Usage (manual)
bash
bash scripts/gateway-watchdog.sh
Requirements
- macOS (uses
launchctl,lsof,date -j) curlin PATH- OpenClaw gateway running under
launchdasai.openclaw.gateway