-
-
Notifications
You must be signed in to change notification settings - Fork 52.8k
Description
Problem
openclaw gateway install resolves the Node.js binary to its full Homebrew Cellar path and writes that into the LaunchAgent plist:
/opt/homebrew/Cellar/node/25.7.0/bin/node
When Homebrew upgrades Node (e.g. brew upgrade or auto-update), the old Cellar directory is removed. The gateway process receives SIGTERM, and launchd cannot restart it because the binary path no longer exists. The gateway stays dead until the user manually runs openclaw gateway install to regenerate the plist.
Impact
- Gateway silently dies overnight when Homebrew auto-updates Node
- All channels (Telegram, Slack, etc.), heartbeats, and cron jobs stop working
- Requires manual intervention to recover (
openclaw gateway install) - Happens repeatedly — every Node upgrade triggers it
Expected behaviour
gateway install should write the stable Homebrew symlink path:
/opt/homebrew/bin/node
This symlink is automatically updated by Homebrew during upgrades, so the LaunchAgent continues to work across Node version changes.
Environment
- macOS (Apple Silicon)
- Node installed via Homebrew
- OpenClaw 2026.3.1
- Node 25.6.1 → 25.7.0 triggered the most recent occurrence
Workaround
Manually edit ~/Library/LaunchAgents/ai.openclaw.gateway.plist to replace the Cellar path with /opt/homebrew/bin/node. Note: this gets overwritten by the next openclaw gateway install.