openclaw - 💡(How to fix) Fix Bonjour mDNS crashes Gateway on VPS/cloud with unhandled promise rejection (CIAO PROBING CANCELLED) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#70232Fetched 2026-04-23 07:27:25
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

Error Message

Error Log Pattern

Run Gateway in tmux instead of systemd. tmux does not treat unhandled promise rejections as fatal process exits, so Gateway continues running despite the Bonjour error.

Root Cause

OpenClaw uses @homebridge/ciao v1.3.6 for mDNS service advertisement. On VPS/cloud networks, mDNS multicast (UDP port 5353) is blocked/filtered. When CIAO probing is cancelled due to network timeout, it throws an unhandled promise rejection which causes the Node.js process to exit.

Fix Action

Fix / Workaround

Current Workaround

Code Example

[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED

---

{"subsystem":"bonjour"} watchdog detected non-announced service; attempting re-advertise
RAW_BUFFERClick to expand / collapse

Bug Summary

OpenClaw Gateway v2026.4.21 crashes with Unhandled promise rejection: CIAO PROBING CANCELLED when running on VPS/cloud servers where mDNS multicast is not supported. Under systemd management with Restart=always, this triggers an infinite restart loop.

Environment

  • OpenClaw: 2026.4.21 (f788c88)
  • Node.js: v22.22.1
  • OS: Ubuntu 24.04 LTS
  • Host: RackNerd VPS (x86_64)

Reproduction Steps

  1. Install OpenClaw 2026.4.21 on a VPS/cloud instance
  2. Run openclaw gateway run --port 18789
  3. Wait 50-70 seconds after startup
  4. Gateway receives SIGTERM and shuts down
  5. Under systemd with Restart=always, infinite restart loop

Error Log Pattern

[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED

Preceded by:

{"subsystem":"bonjour"} watchdog detected non-announced service; attempting re-advertise

Impact Stats (Today)

  • 36 CIAO PROBING CANCELLED errors
  • 51 systemd restart attempts
  • Average time between crashes: ~90 seconds

Attempted Fixes (That Did Not Work)

1. OPENCLAW_DISABLE_BONJOUR=1

Set in systemd service Environment. Not recognized by v2026.4.21 -- Bonjour still starts.

2. gateway.mdns.mode: "off"

Written to openclaw.json. Config appears ignored or overwritten on startup -- not effective.

Current Workaround

Run Gateway in tmux instead of systemd. tmux does not treat unhandled promise rejections as fatal process exits, so Gateway continues running despite the Bonjour error.

Root Cause

OpenClaw uses @homebridge/ciao v1.3.6 for mDNS service advertisement. On VPS/cloud networks, mDNS multicast (UDP port 5353) is blocked/filtered. When CIAO probing is cancelled due to network timeout, it throws an unhandled promise rejection which causes the Node.js process to exit.

Suggested Fixes

Option A - Graceful handling: Catch the CIAO PROBING CANCELLED promise rejection and log a warning instead of crashing.

Option B - Environment variable: Make OPENCLAW_DISABLE_BONJOUR=1 actually skip Bonjour initialization.

Option C - Auto-detection: Probe if UDP 5353 multicast works before starting Bonjour. Skip if unavailable.

Option D - Config respect: Ensure gateway.mdns.mode: "off" is actually respected and disables mDNS.

Request

Please fix the unhandled promise rejection from @homebridge/ciao so that Gateway does not crash on VPS/cloud environments where mDNS is unavailable.

extent analysis

TL;DR

Implement one of the suggested fixes, such as catching the CIAO PROBING CANCELLED promise rejection, to prevent the OpenClaw Gateway from crashing on VPS/cloud environments.

Guidance

  • Investigate implementing Option A - Graceful handling to catch and log the promise rejection instead of crashing.
  • Consider modifying the environment variable handling to make Option B - Environment variable (OPENCLAW_DISABLE_BONJOUR=1) effective in skipping Bonjour initialization.
  • Evaluate the feasibility of Option C - Auto-detection to probe for UDP 5353 multicast availability before starting Bonjour.
  • Verify that the configuration option Option D - Config respect (gateway.mdns.mode: "off") is correctly implemented to disable mDNS.

Example

// Example of catching the CIAO PROBING CANCELLED promise rejection
process.on('unhandledRejection', (reason, promise) => {
  if (reason instanceof Error && reason.message.includes('CIAO PROBING CANCELLED')) {
    console.warn('CIAO probing cancelled, continuing without mDNS');
  } else {
    // Handle other unhandled rejections as before
  }
});

Notes

The chosen solution should be tested thoroughly to ensure it resolves the issue without introducing new problems. The example provided is a basic illustration and may need adjustments based on the actual implementation details of OpenClaw and @homebridge/ciao.

Recommendation

Apply Option A - Graceful handling as it directly addresses the crash cause by catching and handling the promise rejection, allowing the Gateway to continue running despite the mDNS issue. This approach seems to be the most straightforward and least invasive fix among the suggested options.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Bonjour mDNS crashes Gateway on VPS/cloud with unhandled promise rejection (CIAO PROBING CANCELLED) [1 participants]