Skip to content

gateway install: use stable Homebrew symlink path instead of versioned Cellar path #32182

@timcopelandnz

Description

@timcopelandnz

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions