§4 Discovery (mDNS)¶
Status: Stable · RCAN v1.3
For LAN discovery without cloud connectivity, implementations MUST broadcast a _rcan._tcp.local. mDNS service record. TXT records carry the robot's RURI, capabilities, and status — enabling zero-configuration discovery on local networks.
4.1 Overview¶
RCAN discovery is built on Multicast DNS (mDNS) and DNS-SD (RFC 6762 / RFC 6763). Any RCAN-capable device on a LAN MUST advertise itself so that clients can discover robots without manual configuration or cloud connectivity.
Discovery is complementary to registry-based addressing (§1). Even when a robot has a canonical RURI with a cloud registry, it SHOULD also broadcast its mDNS record so LAN clients can discover it without internet access. This is the "Local Supremacy" principle from §7 Federation.
4.2 Service Type¶
Implementations MUST register a DNS-SD service of type:
The instance name SHOULD be the human-readable robot name (e.g. Living Room Companion._rcan._tcp.local.). The SRV record's port MUST match rcan_protocol.port from the robot's config (default: 8000).
DNS-SD browse query:
4.3 Required TXT Records¶
ruri=rcan://continuon.cloud/continuon/companion-v1/d3a4b5c6
model=companion-v1
caps=nav,vision,chat,teleop,arm,status
roles=owner,user,guest
version=1.3.0
name=Living Room Companion
status=idle
| Key | Requirement | Description |
|---|---|---|
ruri |
MUST | Canonical RURI of the robot (§1) |
model |
MUST | Robot model identifier |
caps |
MUST | Comma-separated list of standard capability names (§9) |
roles |
SHOULD | Comma-separated list of roles accepted (owner, user, guest) |
version |
SHOULD | RCAN protocol version (semver) |
name |
MAY | Human-readable robot name for display in discovery UIs |
status |
SHOULD | One of: idle, running, paused, error |
npu |
MAY | NPU/accelerator identifier (e.g. hailo-8l, coral-tpu). Null if none. (v1.7) |
tops |
MAY | Peak NPU throughput in TOPS (e.g. 26). Omit if no NPU. (v1.7) |
caps field: The caps value MUST be a comma-separated list of standard capability names as defined in §9. Custom capabilities MUST use reverse-domain notation (e.g. com.acme.gripper).
4.4 Conformance Requirements¶
- Implementations MUST broadcast
_rcan._tcp.local.whenrcan_protocol.enable_mdns: true. - The
ruriTXT record MUST be present and valid (§1 RURI format). - The
capsTXT record MUST be present and reflect active capabilities. - The
statusTXT record SHOULD be updated within 5 seconds of a state change. - On shutdown, the robot SHOULD send a mDNS goodbye packet (TTL=0) to remove the record from caches.
- Clients MUST handle robots that omit optional TXT fields gracefully.