Federated Robot Registry No Single Point of Control

RCAN robot identity is federated โ€” like DNS. Anyone can host a registry. Every robot's address encodes its authoritative registry directly in the RURI, so resolution never requires a central intermediary.

โš–๏ธ Governance Charter ๐Ÿ“„ Full Protocol Spec

The Registry Is in the Address

A RURI carries the authoritative registry in its scheme โ€” no lookup table required.

rcan://robots.acme-corp.com/acme/logistics-bot/lgb-00a1b2c3
scheme
Always rcan://
registry
Authoritative registry host
manufacturer / model
Namespace within registry
device-id
Unique identifier (โ‰ฅ 8 chars)

Because the registry host is embedded in the RURI, a resolver never needs to ask "where is this robot registered?" โ€” it simply reads the address.


How Resolution Works

Resolution follows a deterministic chain. Each step is attempted in order; the first success wins.

1
Local Cache
Check in-memory or on-disk cache. If a valid, non-expired federation proof exists โ†’ return it.
Cache hit: โ‰ˆ0 ms
2
Parse Registry from RURI
Extract the registry hostname directly from the RURI. No central lookup needed.
robots.acme-corp.com โ† parsed from RURI
3
Query Registry API
HTTP GET to the registry's REST API. The registry returns a signed Federation Proof.
GET https://robots.acme-corp.com/api/rcan/v1/robots/RRN-00042
4
Federation Proof Returned
A signed JSON object confirms the robot's identity, registration status, and audit chain. Cache it for future lookups.
โ†“
If registry unreachable: fall back to rcan.dev (if configured) ยท else return REGISTRY_UNREACHABLE

Federation Proof

Every registry response is a Federation Proof โ€” a signed JSON object:

{
  "registry_url":        "https://robots.acme-corp.com",
  "rrn":                 "RRN-000000000042",
  "robot_name":          "Logistics Bot Alpha",
  "registry_pubkey_hint":"sha256:abc123def456...",
  "timestamp_iso":       "2026-03-04T15:30:00Z",
  "chain_hash":          "sha256:fedcba987654...",
  "attestation":         "active"
}
FieldDescription
registry_urlCanonical URL of the issuing registry
rrnRobot Registration Number โ€” unique within this registry
robot_nameHuman-readable robot display name
registry_pubkey_hintSHA-256 fingerprint of the registry's signing key
timestamp_isoProof generation time (UTC, ISO 8601)
chain_hashSHA-256 link to prior proof โ€” maintains audit chain integrity
attestationactive ยท pending ยท suspended ยท revoked

Three Registry Types

Root Registry
rcan.dev
Operated by the RCAN Working Group. Acts as registry of last resort and bootstrap anchor for federation. Governed by an independent body.
rcan://rcan.dev/boston-dynamics/spot/bd001a2b3c
Public internet Governed
Organisational Registry
my-org.com
Hosted by a manufacturer, enterprise, or research institution. Authoritative for its own namespace. Registers with root for global discoverability.
rcan://robots.acme-corp.com/acme/bot/lgb-00a1b2c3
Self-hosted Federated
Local Registry
local.rcan
Runs on a private network โ€” LAN, robot cell, or air-gapped facility. Discovered via mDNS (_rcan-registry._tcp). No internet required.
rcan://local.rcan/opencastor/rover/abc12345
Offline-capable mDNS

Run Your Own Registry

Five steps to launch an RCAN-conformant federated registry.

1
Implement the RCAN Registry API
Your registry must expose these REST endpoints at your chosen api_base:
GET  {api_base}/robots/{rrn}           โ†’ federation proof
GET  {api_base}/robots?manufacturer=...  โ†’ robot list
POST {api_base}/robots                  โ†’ register robot
GET  {api_base}/status                  โ†’ health check
2
Generate and Publish Your Key Pair
Registry federation proofs must be signed. Generate an Ed25519 key pair:
openssl genpkey -algorithm ed25519 -out registry-private.pem
openssl pkey -in registry-private.pem -pubout -out registry-public.pem
# Serve registry-public.pem at /.well-known/rcan-registry.pub
3
Publish /.well-known/rcan-registry.json
This descriptor lets other registries and resolvers discover your registry's capabilities:
{
  "name":           "ACME Robotics Registry",
  "operator":       "ACME Corporation",
  "rcan_version":   "1.3",
  "api_base":       "https://robots.acme-corp.com/api/rcan/v1",
  "public_key_url": "https://robots.acme-corp.com/.well-known/rcan-registry.pub",
  "federation_root":"https://rcan.dev"
}
4
Validate Conformance
Run the RCAN conformance checker to verify your implementation before registering:
python3 scripts/conformance/check_l1.py \
  --host your-registry.example.com \
  --port 443 \
  --registry-mode
5
Register with the Root
Submit your registry to rcan.dev to join the global federation index:
POST https://rcan.dev/api/rcan/v1/federation/registries
Content-Type: application/json

{
  "registry_url":   "https://your-registry.example.com",
  "well_known_url": "https://your-registry.example.com/.well-known/rcan-registry.json"
}
The root registry fetches your descriptor, verifies conformance, and adds you to the federation index.

Governance

The root registry rcan.dev is governed by an independent body โ€” not by any single manufacturer, cloud provider, or government. This ensures no single actor can capture the global robot identity namespace.

Governance responsibilities include: setting the RCAN specification, operating the root registry, maintaining the federation index, and publishing all governance decisions publicly.

โ†’ Read the full Governance Charter


โ†’ Full Federation Protocol Spec (Markdown)  ยท  โ†’ Conformance Tests  ยท  โ†’ Governance