A browser extension

You stop noticing
the moment you slouch.
This doesn't.

Upright watches your posture the way a spirit level watches a shelf, quietly, and only tells you something when you've actually drifted. Every calculation happens on your machine. Nothing is ever uploaded.

Local processing only, no account, no server, no video ever leaves your device.

! Fix your posture ✓ Good posture
The problem

Slouching doesn't announce itself.

You sit down straight. Twenty minutes into something that actually holds your attention, your spine starts giving ground a centimeter at a time, and by the time you'd notice on your own, you're already there. Proprioception is bad at this specific job, it adapts to wherever you are, not to where you started.

Most posture apps fight this with alarms, or worse, guilt. Upright takes the quieter route: a small capsule that sits in the corner of whatever you're doing and simply changes color when you've drifted, the same way a level's bubble drifts off-center. You glance, you correct, you keep working.

HOW IT WORKS
01

Calibrate once

Sit the way you actually sit when you're doing it right. Upright records that as your baseline, not some textbook ideal.

02

It watches, locally

A pretrained vision model tracks your head, neck and shoulders on-device, entirely inside your browser. No frame is ever sent anywhere.

03

You get a nudge, not a lecture

The capsule shifts color. That's the whole interaction. Correct, and it shifts back, no notification, no streak-ending panic.

WHAT'S IN IT

The floating capsule

A small, draggable, color-coded readout that lives in the corner of any tab. Green, amber, or red, glanceable without breaking focus.

A streak with no small print

Open the camera on a given calendar day, even briefly, and that day counts. Miss one, and it resets. No hidden minimums, no monetized "streak freeze."

A little to-do list

Because you're already in there once a day. Add three things, check them off, no separate app required.

See what it sees

An optional live preview shows the exact tracking points, head, shoulders, gaze, so calibration is never a guess.

Nothing to sign in to

No account, no server, no analytics pinging anywhere. If you'd like to check, the whole thing is small enough to read.

A breakdown, not just a color

Every session ends with the real numbers behind the score: which part of your posture drifted most, by how many degrees, on average and at its worst.

Privacy, by construction

Your camera feed never leaves this device. Not "we don't look at it." It never leaves.

Every model runs inside the extension's own background process. There is no server to send anything to, because there is no server. What's saved locally is small on purpose: your calibration, your streak, and a rolling log you can clear whenever you want.

  • Zero network requests, checked line by line
  • Storage stays on-device, never synced to an account
  • Camera runs only while you've explicitly started it
  • Event log lives in memory, cleared on its own
The journal

Notes on posture, privacy, and building this thing.

These posts are currently written in English only.