openclaw - ✅(Solved) Fix [Bug]: When running openclaw gateway run, the gateway starts successfully, but the bonjour (mDNS) plugin repeatedly fails and crashes with CIAO PROBING CANCELLED. [1 pull requests, 1 comments, 2 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#72689Fetched 2026-04-28 06:33:25
View on GitHub
Comments
1
Participants
2
Timeline
9
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×3labeled ×2marked_as_duplicate ×2closed ×1

When running openclaw gateway run, the gateway starts successfully, but the bonjour (mDNS) plugin repeatedly fails and crashes with CIAO PROBING CANCELLED.

Error Message

Error is not gracefully handled → leads to unhandled rejection

Root Cause

When running openclaw gateway run, the gateway starts successfully, but the bonjour (mDNS) plugin repeatedly fails and crashes with CIAO PROBING CANCELLED.

Fix Action

Fixed

PR fix notes

PR #72694: fix(bonjour): use system hostname for mDNS announcements instead of hardcoded 'openclaw'

Description (problem / solution / changelog)

Summary

Fixes #72355 (and the regression #72689 reports the same way) — the Bonjour advertiser hardcoded the announced hostname to openclaw.local whenever OPENCLAW_MDNS_HOSTNAME was unset. On any host whose system hostname is something else (e.g. Lobster on Debian, ubuntu on a fresh VPS), the advertised host record collides with no real host on the LAN and ciao gets stuck cycling through PROBING:

[plugins] bonjour: watchdog detected non-announced service;
  attempting re-advertise (host=openclaw.local. state=probing)
[plugins] bonjour: restarting advertiser (service stuck in probing for 34568ms)
[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED

The watchdog tears the responder down every ~45 seconds and the gateway enters a crash loop until the user manually disables mDNS via discovery.mdns.mode = "off".

Fix

Introduce resolveSystemMdnsHostname() and use it as the new default. The function:

  • calls os.hostname() and tolerates the rare throw / non-string return, returning null for the caller to fall through;
  • strips a trailing .local suffix and uses the first label so we pass a bare label to ciao (matching the ${hostname}.local. FQDN it builds);
  • rejects labels that violate RFC 1123 LDH (letters/digits/hyphens, 1–63 chars, no leading/trailing hyphen) so we never advertise a name ciao would refuse during PROBING. Hostnames containing underscores or whitespace fall back to the legacy openclaw default rather than guaranteeing a probe failure.

New resolution order

OPENCLAW_MDNS_HOSTNAME (explicit override) → system hostname (validated) → openclaw (last-resort fallback)

This is fully backwards compatible:

ScenarioBeforeAfter
OPENCLAW_MDNS_HOSTNAME setuses envuses env (unchanged)
Hostname is Lobsteradvertises openclaw.local (probe loop)advertises Lobster.local
Hostname is Mac.localdomainadvertises openclaw.local (probe loop)advertises Mac.local
Hostname is ubuntu (#72689)advertises openclaw.local (probe loop)advertises ubuntu.local
Hostname has _ / spacesadvertises openclaw.localadvertises openclaw.local (legacy fallback)
os.hostname() throws / returns emptyadvertises openclaw.localadvertises openclaw.local

Tests

extensions/bonjour/src/advertiser.test.ts:

  • updates the existing "normalizes hostnames with domains for service names" case to reflect the new system-hostname default (Mac.localdomainMac).
  • adds "falls back to 'openclaw' when system hostname is invalid for DNS" — asserts the legacy fallback when os.hostname() returns My_Lobster Host (underscores + space).
  • adds "uses system hostname when OPENCLAW_MDNS_HOSTNAME is unset" — asserts LobsterLobster.local.

Refs

  • Closes #72355
  • Also fixes the regression report in #72689 (same root cause, hostname ubuntu)

Changed files

  • extensions/bonjour/src/advertiser.test.ts (modified, +52/-1)
  • extensions/bonjour/src/advertiser.ts (modified, +42/-1)
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

When running openclaw gateway run, the gateway starts successfully, but the bonjour (mDNS) plugin repeatedly fails and crashes with CIAO PROBING CANCELLED.

Steps to reproduce

openclaw gateway run

🦞 OpenClaw 2026.4.24 (cbcfdf6) — It's not "failing," it's "discovering new ways to configure the same thing wrong."

│ ◇
15:32:13 [gateway] loading configuration… 15:32:13 [gateway] resolving authentication… 15:32:13 [gateway] starting... 15:32:20 [gateway] starting HTTP server... 15:32:20 [canvas] host mounted at http://127.0.0.1:18789/__openclaw__/canvas/ (root /home/ubuntu/.openclaw/canvas) 15:32:21 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s) 15:32:21 [gateway] agent model: deepseek/deepseek-v4-flash 15:32:21 [gateway] ready (6 plugins: acpx, bonjour, browser, device-pair, phone-control, talk-voice; 8.6s) 15:32:21 [gateway] log file: /tmp/openclaw/openclaw-2026-04-27.log 15:32:21 [gateway] security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run openclaw security audit. 15:32:21 [gateway] starting channels and sidecars... 15:32:33 [plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=ubuntu (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing) 15:32:51 [model-pricing] OpenRouter pricing fetch failed: TypeError: fetch failed 15:32:51 [plugins] bonjour: restarting advertiser (service stuck in probing for 17823ms (gateway fqdn=ubuntu (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing)) 15:32:51 [plugins] bonjour: advertised gateway fqdn=ubuntu (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=unannounced 15:32:51 [openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED 15:32:51 [openclaw] wrote stability bundle: /home/ubuntu/.openclaw/logs/stability/openclaw-stability-2026-04-27T07-32-51-099Z-8885-unhandled_rejection.json

Expected behavior

None

Actual behavior

None

OpenClaw version

2026.4.24

Operating system

ubuntu22.04

Install method

npm

Model

deepseek/deepseek-v4-flash

Provider / routing chain

openclaw->deepseek->deepseek/deepseek/deepseek-v4-flash

Additional provider/model setup details

✅ Expected Behavior Gateway starts normally Bonjour/mDNS service advertises successfully or at least fails gracefully without unhandled rejection ❌ Actual Behavior Gateway starts successfully HTTP server and canvas are accessible But bonjour plugin enters a loop: stuck in probing watchdog restarts advertiser eventually throws: Unhandled promise rejection: CIAO PROBING CANCELLED 📋 Logs [gateway] ready (6 plugins: acpx, bonjour, browser, device-pair, phone-control, talk-voice)

[plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (state=probing)

[plugins] bonjour: restarting advertiser (service stuck in probing)

[plugins] bonjour: advertised gateway ... state=unannounced

[openclaw] Unhandled promise rejection: CIAO PROBING CANCELLED 🌐 Additional Observations Gateway itself works fine (http://127.0.0.1:18789 accessible) Issue seems isolated to bonjour/mDNS advertisement Also seeing: [model-pricing] OpenRouter pricing fetch failed: fetch failed ⚠️ Notes Likely related to: mDNS/Bonjour not supported in current network environment (Docker / VPN / multiple interfaces) or ciao library probing cancellation not handled properly Error is not gracefully handled → leads to unhandled rejection 💡 Suggested Fix Handle CIAO PROBING CANCELLED gracefully (no unhandled rejection) Allow disabling bonjour plugin cleanly Avoid watchdog infinite restart loop when probing fails

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The bonjour plugin's repeated failure and crash with "CIAO PROBING CANCELLED" can be addressed by handling the probing cancellation gracefully and potentially disabling the bonjour plugin.

Guidance

  • Investigate network environment limitations, such as Docker, VPN, or multiple interfaces, that might be affecting mDNS/Bonjour support.
  • Handle the "CIAO PROBING CANCELLED" error to prevent unhandled promise rejections, potentially by catching and logging the error.
  • Consider disabling the bonjour plugin if it's not essential for the current setup, to avoid the watchdog's infinite restart loop.
  • Review the OpenRouter pricing fetch failure to ensure it's not related to the bonjour issue.

Example

No specific code example is provided due to the lack of detailed implementation information.

Notes

The issue seems isolated to the bonjour/mDNS advertisement, and the gateway itself works fine. The error handling and potential plugin disabling are the primary areas of focus for a resolution.

Recommendation

Apply a workaround by handling the "CIAO PROBING CANCELLED" error and consider disabling the bonjour plugin if necessary, as the root cause is likely related to the network environment or the ciao library's probing cancellation handling.

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

None

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 - ✅(Solved) Fix [Bug]: When running openclaw gateway run, the gateway starts successfully, but the bonjour (mDNS) plugin repeatedly fails and crashes with CIAO PROBING CANCELLED. [1 pull requests, 1 comments, 2 participants]