Discovery (mDNS)
Find robots on your local network without cloud connectivity.
Service Type
RCAN robots announce themselves using mDNS with the service type:
_rcan._tcp.local. TXT Records
Robots broadcast metadata in DNS TXT records:
ruri=rcan://continuon.cloud/continuon/companion-v1/d3a4b5c6
model=companion-v1
caps=arm,vision,chat,teleop
roles=owner,user,guest
version=1.0.0
name=Living Room Companion
status=idle Record Fields
| Field | Description |
|---|---|
ruri | Full Robot URI |
model | Robot model identifier |
caps | Comma-separated capabilities |
roles | Available access roles |
version | RCAN protocol version |
name | Human-readable name |
status | Current robot status |
Discovering Robots
Using avahi-browse (Linux)
avahi-browse -r _rcan._tcp Using dns-sd (macOS)
dns-sd -B _rcan._tcp local. Using Python (zeroconf)
from zeroconf import ServiceBrowser, Zeroconf
class RCANListener:
def add_service(self, zc, type, name):
info = zc.get_service_info(type, name)
if info:
ruri = info.properties.get(b'ruri', b'').decode()
print(f"Found robot: {ruri}")
zeroconf = Zeroconf()
browser = ServiceBrowser(zeroconf, "_rcan._tcp.local.", RCANListener()) Local Supremacy
A key RCAN principle: local discovery always works, even if:
- Internet is unavailable
- Cloud registry is down
- Robot's registry ID was deleted
This ensures robots remain controllable in disconnected environments.
Status Values
| Status | Meaning |
|---|---|
idle | Ready and awaiting commands |
busy | Executing a task |
charging | On charger, not operational |
error | Fault condition |
offline | Not accepting connections |