openclaw - 💡(How to fix) Fix Bonjour/mDNS conflict can crash gateway with unhandled CIAO cancellation rejection [2 comments, 3 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#71759Fetched 2026-04-26 05:08:45
View on GitHub
Comments
2
Participants
3
Timeline
18
Reactions
0
Author
Timeline (top)
cross-referenced ×8marked_as_duplicate ×7commented ×2closed ×1

When two OpenClaw gateways are running on the same host/network namespace, the Bonjour/mDNS advertiser can hit a name/hostname conflict and crash the gateway with an unhandled promise rejection from @homebridge/ciao.

This looks like a recoverable local-discovery conflict, but it currently takes down the whole gateway process.

Root Cause

The user gateway starts successfully and reports ready, but shortly after startup the Bonjour plugin detects that the service is stuck in probing or announcing, attempts to re-advertise, and then the gateway exits because a CIAO cancellation rejection is unhandled.

Fix Action

Workaround

Disabling Bonjour for the affected gateway avoids the crash:

[Service]
Environment=OPENCLAW_DISABLE_BONJOUR=1

After applying that systemd drop-in and restarting, the gateway stayed active and /health returned:

{"ok":true,"status":"live"}

Code Example

[gateway] ready (8 plugins: acpx, active-memory, bonjour, browser, device-pair, phone-control, talk-voice, telegram; 5.8s)
[plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=Claude (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing)
[plugins] bonjour: restarting advertiser (service stuck in probing for 8990ms (gateway fqdn=Claude (OpenClaw) (2)._openclaw-gw._tcp.local. host=openclaw-(2).local. port=18789 state=probing))
[plugins] bonjour: advertised gateway fqdn=Claude (OpenClaw) (2)._openclaw-gw._tcp.local. host=openclaw-(2).local. port=18789 state=unannounced
[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED
systemd[834]: openclaw-gateway.service: Main process exited, code=exited, status=1/FAILURE
systemd[834]: openclaw-gateway.service: Failed with result 'exit-code'.

---

[openclaw] Unhandled promise rejection: CIAO ANNOUNCEMENT CANCELLED

---

[Service]
Environment=OPENCLAW_DISABLE_BONJOUR=1

---

{"ok":true,"status":"live"}
RAW_BUFFERClick to expand / collapse

Summary

When two OpenClaw gateways are running on the same host/network namespace, the Bonjour/mDNS advertiser can hit a name/hostname conflict and crash the gateway with an unhandled promise rejection from @homebridge/ciao.

This looks like a recoverable local-discovery conflict, but it currently takes down the whole gateway process.

Environment

  • OpenClaw gateway service version: 2026.4.24
  • Node: 22.22.2
  • OS: Ubuntu 24.04 on Linux 6.17.0-1011-azure
  • Runtime: systemd user service
  • Setup: two OpenClaw gateways on the same host
    • user gateway on 127.0.0.1:18789
    • second gateway on 127.0.0.1:18790

What happened

The user gateway starts successfully and reports ready, but shortly after startup the Bonjour plugin detects that the service is stuck in probing or announcing, attempts to re-advertise, and then the gateway exits because a CIAO cancellation rejection is unhandled.

Example logs:

[gateway] ready (8 plugins: acpx, active-memory, bonjour, browser, device-pair, phone-control, talk-voice, telegram; 5.8s)
[plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=Claude (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing)
[plugins] bonjour: restarting advertiser (service stuck in probing for 8990ms (gateway fqdn=Claude (OpenClaw) (2)._openclaw-gw._tcp.local. host=openclaw-(2).local. port=18789 state=probing))
[plugins] bonjour: advertised gateway fqdn=Claude (OpenClaw) (2)._openclaw-gw._tcp.local. host=openclaw-(2).local. port=18789 state=unannounced
[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED
systemd[834]: openclaw-gateway.service: Main process exited, code=exited, status=1/FAILURE
systemd[834]: openclaw-gateway.service: Failed with result 'exit-code'.

I also saw the same failure mode with:

[openclaw] Unhandled promise rejection: CIAO ANNOUNCEMENT CANCELLED

Expected behavior

Bonjour/mDNS announcement conflicts or CIAO cancellation errors should be handled locally by the Bonjour plugin. The gateway should keep running, possibly with local discovery disabled/degraded or with a logged warning.

Actual behavior

The gateway process exits with status 1 and systemd restarts it. This can lead to a restart loop.

Workaround

Disabling Bonjour for the affected gateway avoids the crash:

[Service]
Environment=OPENCLAW_DISABLE_BONJOUR=1

After applying that systemd drop-in and restarting, the gateway stayed active and /health returned:

{"ok":true,"status":"live"}

Notes

The duplicate-gateway setup is likely what triggers this, but the crash itself appears to be caused by an unhandled cancellation rejection from the Bonjour/CIAO path. Ideally this should not terminate the whole gateway.

extent analysis

TL;DR

Disable Bonjour for the affected gateway by setting OPENCLAW_DISABLE_BONJOUR=1 to prevent the crash.

Guidance

  • The issue is likely caused by a name/hostname conflict between the two OpenClaw gateways running on the same host/network namespace, leading to an unhandled promise rejection from @homebridge/ciao.
  • To verify the issue, check the logs for Unhandled promise rejection: CIAO PROBING CANCELLED or Unhandled promise rejection: CIAO ANNOUNCEMENT CANCELLED errors.
  • Disabling Bonjour for the affected gateway using the OPENCLAW_DISABLE_BONJOUR=1 environment variable can mitigate the issue.
  • To apply the workaround, create a systemd drop-in file with the environment variable and restart the gateway service.

Example

No code snippet is necessary, as the workaround involves setting an environment variable in a systemd configuration file.

Notes

The provided workaround may not be a permanent solution, as it disables Bonjour for the affected gateway. A more robust solution would involve handling the name/hostname conflict and CIAO cancellation errors within the Bonjour plugin.

Recommendation

Apply the workaround by disabling Bonjour for the affected gateway, as it is a simple and effective way to prevent the crash. This will allow the gateway to stay active, but it may not be the ideal long-term solution.

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…

FAQ

Expected behavior

Bonjour/mDNS announcement conflicts or CIAO cancellation errors should be handled locally by the Bonjour plugin. The gateway should keep running, possibly with local discovery disabled/degraded or with a logged warning.

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 conflict can crash gateway with unhandled CIAO cancellation rejection [2 comments, 3 participants]