Robots, drones and cranes join a room, like people join a video call. Everyone sees the live video in about 100 ms, and one person drives. Built on open-source pi-webrtc.
Pick how the device is reached. More than one transport can run at the same time.
MQTT
Needs: An MQTT broker
Peer-to-peer viewing from anywhere. The device needs no public hostname — any broker brokers the handshake.
WHEP
Needs: No extra server — a LAN IP is enough
The device serves the endpoint itself, so the stream plays from a plain URL in any WHEP player, including Home Assistant.
SFU
Needs: cf-sfu-worker on your Cloudflare account, or a LiveKit server
Many simultaneous viewers. The device uploads one stream and the SFU fans it out, so viewer count stops being its problem.
With an SFU the board uploads once and any number of viewers can watch and send control messages back over a DataChannel.
Glass to glass: camera to viewer's screen. About 100 ms at 120 fps with both ends near one Cloudflare location. Distance, slower networks and lower frame rates add more.
04
Why pi-webrtc
The camera board is the WebRTC endpoint. There is no gateway in the media path.
What that buys you: one less always-on host to deploy, secure and scale. Nothing transcodes or re-streams in between, so the delay stays close to the network round-trip rather than stacking up per hop. Control travels back over a DataChannel on the same connection, so there is no second path to operate. And the same binary covers both shapes — peer-to-peer for a single viewer, an SFU when you need many.
TraditionalRTSP camera + gatewayA separate always-on host sits in the media path — one more thing to run, secure and scale.
pi-webrtcThe board is the endpointThe board encodes once and speaks WebRTC itself — straight to a viewer, or into an SFU to fan out.
RTSP camerasLower bandwidth bills for RTSP camerasFor an IP camera, pi-webrtc runs on a small board next to it, as a gateway that re-encodes. Media servers such as MediaMTX relay the stream as it is: to lower the bitrate, you run FFmpeg next to them, one fixed copy per quality. pi-webrtc sets the bitrate on the device and keeps adjusting to the network. A wall of small tiles then uses a fraction of the data, and your cloud and cellular bills drop every month.
One 1080p60 camera, streamed 24 hours a day for 30 days
Media server relay1080p60 · 8 Mbps2,592 GB
pi-webrtc · monitoring wall2 Mbps cap · up to 1080p60648 GB−75%
pi-webrtc · status tile0.5 Mbps cap · 960×540 at 60 fps162 GB−94%
01,0002,0003,000 GB
pi-webrtc values are bitrate caps; actual use depends on the scene. Video sizes measured on a Jetson Orin NX with a mostly still scene.
05Roadmap
Next: an AI co-pilot
Each session already carries the video and the operator's commands on one connection. We plan to record them together, train a model in the cloud, and let it help drive.
Planned
1Record
Save the video and the commands in sync, for each session.
Planned
2Train
Train a model on your own sessions in the cloud.
Planned
3Co-pilot
The model suggests moves or handles routine ones. A person can always take over.
06
Try it in a few minutes
Use our free test server. You need a Raspberry Pi or a Jetson with a camera.
Device
1
Install
Install the libraries, then download pi-webrtc and unpack it.
pi-webrtc is open source under Apache-2.0 and production-ready on its own.
Sponsor-only builds add object detection and tracking on Jetson, multi-camera capture, and direct LiveKit connections — plus access to the private sponsor repositories.