How On-Device Pose Estimation Works (And Why It Stays On Your Phone)

本機辨識

A camera pointed at your body is about the most sensitive sensor there is. Here is what the app does with those frames, and where they go.

A camera pointed at your body in your own home is about the most sensitive sensor there is. Here is exactly what the app does with those frames, where they go, and what the architecture does and does not guarantee.

What pose estimation is

A pose estimation model takes an image and returns the estimated positions of a set of body landmarks — typically around thirty-three points covering head, shoulders, elbows, wrists, hips, knees, ankles and feet. Each comes with x and y coordinates and a confidence value.

The critical property for privacy purposes: the output is a list of numbers. Once a frame has been processed, what remains is a set of coordinates. The picture is not part of the result.

形xíng
Form, shapeWhat the model can see — the external geometry of a posture.
意yì
Intent, attentionWhat the model cannot see, and what most of the practice consists of.

The pipeline

  1. 01
    Camera permission

    Nothing starts until you explicitly grant camera access, and only on the screens that use it. Browsers show their own indicator whenever a camera is live — an independent signal not controlled by the page.

  2. 02
    Frame capture

    Frames are drawn to an in-memory canvas in the page. They are not written to disk and are not placed in any upload queue.

  3. 03
    Inference

    MediaPipe Pose, running through TensorFlow.js with a WebGL backend, processes the frame using your device's GPU and returns landmark coordinates.

  4. 04
    Comparison

    Those coordinates are compared against reference values for the current movement — angles and relative positions rather than raw pixels. See Reading a Posture Score.

  5. 05
    Feedback

    A score and a written cue are rendered to the screen.

  6. 06
    Discard

    The frame is replaced by the next one. Nothing accumulates.

How to verify it yourself

You should not take a privacy claim on trust from the party making it. This one is checkable in about a minute:

  1. Open your browser's developer tools and select the Network tab.
  2. Start a practice session with the camera on.
  3. Watch the outbound requests. You will see the model weights download once, at the start.
  4. Look for anything being uploaded during practice — repeated POST requests, large outbound payloads, WebSocket traffic carrying frame data.
  5. For a stronger test: put the browser in offline mode after the model has loaded. Pose guidance keeps working.

That last test is the decisive one. Something that continues to function with the network disconnected is not sending your frames anywhere.

What we are careful not to claim

It would be easy to write "we never collect any data". We do not say that, because it would not be true of the product as a whole.

ComponentWhere it runsWhat leaves your device
Pose estimationYour browserNothing — coordinates stay local
Practice sessions offlineYour browserNothing
Account and syncServerYour email and practice history, if you create an account
PaymentsPayment processorHandled by the processor; card details never reach us
Model weightsDownloaded onceA standard file request

The precise claim is narrower and defensible: camera frames are analysed on your device and do not need to be uploaded for posture guidance to function. Practise offline and nothing at all leaves.

Why it was built this way

Partly principle and partly practicality. Streaming video to a server for analysis would cost real money per user per minute, add latency that makes real-time feedback unusable, and require operating a system holding video of people exercising at home — a liability nobody sensible wants.

Local inference removes all three problems at once. It also happens to be the right answer, which is a pleasant coincidence rather than a moral achievement.

Is my camera footage uploaded?
No. Frames are processed in your browser by MediaPipe and TensorFlow.js and are not uploaded for the guidance to work. You can verify this by practising with the network disconnected.
Are frames stored on my device?
No. They are held in memory for the duration of a single frame and then replaced.
Does it work offline?
Yes, once the model weights have downloaded. This is also the simplest way to prove the analysis is local.
What if I do not want to use the camera at all?
Then do not grant permission. Everything else works exactly the same.
Why does the browser show a camera indicator?
Because the camera is genuinely active while you are using pose guidance. The indicator is controlled by your browser, not by the page, which makes it a trustworthy signal.