Reference
QuadShadow Wire Protocol — v0 (alpha)
Deliberately minimal: one persistent TCP connection, length-prefixed binary frames, strict request→response alternation. v0 is what we've measured end-to-end (~1.0 ms added over same-region VPC); a WebRTC/UDP transport for lossy last-hops is on the roadmap and will version as v1.
Transport
- TCP, one long-lived connection per robot.
TCP_NODELAYmust be set on both ends. Nagle's algorithm will otherwise add up to 40 ms — more than our entire inference budget.- All integers big-endian. Floats are IEEE-754.
- One request in flight at a time per connection (pipelining is undefined in v0).
Frames
Request (robot → server)
+----------------+------------------------+
| len: uint32 BE | payload: len bytes |
+----------------+------------------------+
payload is the serialized observation: camera frames (JPEG-compressed) + proprioceptive
state + task string. Typical size ~25 KB for 3×256×256 JPEG frames + state vector.
Exact observation schema is per-policy and agreed at onboarding.
Response (server → robot)
+---------------------+----------------+------------------------+
| server_ms: float64 | len: uint32 BE | actions: len bytes |
+---------------------+----------------+------------------------+
server_ms— server-side inference time for this request, in milliseconds. Subtract from your measured end-to-end to get your network cost; alert if the gap drifts.actions— the action chunk: float32 array, row-major,[chunk_size × action_dim](SmolVLA: 50 × action_dim). Typical size ~1.4 KB.
Connection lifecycle
- Server accepts, then serves request/response pairs until the client closes or the connection errors; reconnect with simple exponential backoff (100 ms → 2 s cap).
- First 5–10 inferences after a cold connection may be slower (CUDA graph/cache warm-up); discard them from latency stats and don't gate robot motion on them.
What v0 does not have (by design, alpha)
- No auth inside the protocol — endpoints are network-isolated per partner (VPC/IP allowlist) during alpha. Token auth arrives with v1.
- No streaming partial chunks, no server push, no multiplexing.
- No compression negotiation — JPEG your frames client-side.
Reference implementations
A reference server/client pair — the exact code used in our latency measurements — is provided to design partners during onboarding.