$ the-wire · showcase
Gateway drain race fix, Tailscale Serve for WSL, setup fails closed
By RepoJournal · Filed · About OpenClaw
A fix for launchd reload ensures the gateway won't strand when restarts race the 300s drain window, while Windows now supports Tailscale Serve for private remote access.
The launchd reload handoff in openclaw now waits out the gateway's drain window before re-bootstrapping, closing a race where a restart could leave the gateway unavailable. Previously the handoff waited only ~3s, but the booted-out gateway keeps its label registered until drain completes (up to 300s), so bootstrap failed with EIO and the kickstart -k fallback couldn't recover. This is a fix for deployments that use launchd-driven gateway restarts. [1]
Concurrent managed updates are now single-flight at their shared infrastructure owner. Automatic update callers may join the active handoff, but only its owner schedules the Gateway restart and persists the restart intent, preventing multiple updater processes from racing service restart and state migration. This keeps the Gateway healthy under concurrent update triggers. [2]
Windows users with Tailscale get opt-in Tailscale Serve provisioning for WSL gateways. Generated WSL gateways were loopback-only, so Companion couldn't use a private tailnet endpoint. This adds browser/auth-key authorization, WSS gateway registration, and Tailscale-aware recovery, enabling secure remote access without LAN exposure. Separately, SetupEngine now fails closed when given invalid explicit configuration or malformed arguments, instead of silently falling back to bundled defaults. For example, `--config --headless` previously treated `--headless` as the config file path. [3][4]
ClawSweeper's OpenClaw Bay dashboard exposes exact-review pressure telemetry, and automerge worker health is consolidated into the Worker Health section. The refactor reorganizes dashboard presentation without changing telemetry collection or the API payload. [5][6]
Action items
- → For launchd-managed gateways, update to the commit that makes reload wait out the drain window before your next restart. openclaw/openclaw [plan]
- → Review concurrent update behavior if you trigger managed updates from multiple callers; single-flight handoff is now enforced. openclaw/openclaw [plan]
- → For Windows users with Tailscale, enable Tailscale Serve provisioning when generating WSL gateways to get private tailnet access. openclaw/openclaw-windows-node [monitor]
References
- [1] fix: launchd reload handoff strands gateway when restart races the drain window (#110213) ↗ openclaw/openclaw
- [2] fix(update): keep gateway healthy during concurrent updates ↗ openclaw/openclaw
- [3] Add Tailscale Serve support for WSL gateways ↗ openclaw/openclaw-windows-node
- [4] fix: setup fails closed for invalid configuration arguments ↗ openclaw/openclaw-windows-node
- [5] feat(dashboard): OpenClaw Bay improvements (#597) ↗ openclaw/clawsweeper
- [6] Consolidate automerge worker health (#648) ↗ openclaw/clawsweeper