On-device
A worker on your machine downsamples the fork and runs motion and scene-change detection. Zero egress, works with no internet at all, and it is the default.

AI insights
Every stream in a call is already a live track on your device. Cloning one costs nothing — no re-encode, no extra uplink — so a copy can be handed to analysis while the call carries on untouched. Where that copy goes is entirely your choice, and it is off until you make one.
local cam ─┐
screen ───┼─► track.clone() ─► frame tap (worker)
camera src ┤ │ throttled fps, downscaled
remote pc ─┘ ▼
┌──────────────┐
│ Insight Bus │
└──────┬───────┘
┌───────────────┼────────────────┐
▼ ▼ ▼
on-device your receiver your API key
(worker) (WHIP / socket) (BYO vision)
│
▼
tile overlay + insights feedThe clone is read as decoded frames, downscaled to a few hundred pixels, and throttled to one to five frames per second. That is enough for detection and scene understanding, and small enough that the analysis path never competes with the call for bandwidth or GPU.
A worker on your machine downsamples the fork and runs motion and scene-change detection. Zero egress, works with no internet at all, and it is the default.
Send the cloned track by WHIP to a receiver you run — a box on the LAN, a workstation, or your own cloud. Hardware-encoded, no transcode, no third party in the path.
Post downscaled frames to a WebSocket or HTTP endpoint you control and read JSON insights back over the same connection.
Point a tap at a vision API using your own key. The key is stored on your device and never reaches our backend, because there is no backend in the media path.
No tap exists until someone creates one. There is no ambient analysis and no default endpoint.
Tapping a remote participant announces it over the data channel, and everyone sees a persistent badge for as long as it runs.
Any participant can refuse taps on their stream. The refusal is applied on the tapping device, so the fork simply never starts.
Taps are throttled to a few frames per second, yield under uplink pressure, and suspend when the tab is hidden. Human video always wins.
End-to-end encryption is unaffected. A tap reads frames that this device has already decoded for display — it does not weaken the transport, and it gives no one else access to the media.
Motion and scene-change alerts on a camera nobody is watching, surfaced into the call the moment they fire.
Read more →Point an inspection angle at your own defect model and get the read while the technician is still in front of the machine.
Read more →Run analysis on your own hardware so incident video never enters someone else's cloud to be processed.
Read more →No. There is no media server, and taps run on your device. If you configure an external sink, the frames go to the endpoint you named and nowhere else.
On-device taps cost none. External sinks send a few downscaled frames per second, and WHIP publishing is marked low priority so people in the call are served first.
Chromium browsers and Edge get the efficient frame path. Elsewhere it falls back to a canvas tap, which works but costs a little more CPU.
Yes — that is the point of the endpoint and API sinks. Run whatever you like on your own receiver and hand back a small JSON event; the insights feed and tile overlays render it.
Yes. Tapping a remote stream announces itself in the room and shows a persistent badge, and anyone can refuse taps on their own stream.