Skip to content
Early access — free while we polish. Send a note

Don't take our word for it

The webcam never leaves this computer.

Pose runs in this tab, in WebAssembly. Below is a live meter of anything this page tries to upload, plus the checks you can run yourself in the browser.

No webcam frames have left this tab.

Video-like uploads: 0 bytes · WebRTC connections opened: 0 · Local-only is on (no account traffic).

  1. 01

    Webcam

    Not started. The stream is created in this tab with getUserMedia.

  2. 02

    This tab

    Frames go into a local <video>, then MediaPipe WASM at 5–8 fps. Landmarks never leave RAM.

  3. 03

    Not the internet

    No POST of image/*, video/*, or canvas blobs. Optional score JSON only if you sign in and turn Local-only off.

Live upload log

Non-GET requests this session (auth, score sync). A frame upload would show as media, here.

No uploads yet. Start the camera, sit, wait. This list should stay empty of video.

Prove it yourself in two minutes

  1. Network panel. Open DevTools → Network. Filter “Img”, “Media”, and “Fetch/XHR”. Start the camera. You will see the pose model and WASM load once from this origin. You will not see a repeating POST of a JPEG, WebM, or canvas blob.
  2. Go offline. In that same Network panel, set throttling to Offline — or turn Wi‑Fi off. Keep the Monitor tab open. Green/red still updates. If frames needed a server, the loop would die.
  3. Lock the camera down. The browser permission is for this site only. Stop monitoring and the track ends. We never request the microphone.

Optional score sync (minutes, alerts) is JSON and only happens if you sign in and turn Local-only off in Settings. That payload has no image.

Policy language for IT: Privacy.