Free & Open Source

Real-time posture
monitoring for your desktop

BatesPosture uses your webcam and MediaPipe to score your posture every second — entirely on your machine. No cloud, no subscriptions, no tracking.

Download All platforms & versions
Latest release: checking…
Poor posture — alert sent
Fair — minor corrections
Excellent — streak running

Everything you need, nothing you don't

A focused tool that stays out of your way until your posture needs attention.

📊

Live 0–100 posture score

Seven weighted metrics — head tilt, neck angle, shoulder balance, spine alignment, and more — combined into a single colour-coded score in your tray icon.

📈

Session dashboard

Sparkline history, session average, min/max, best streak, and duration — all in a floating window that remembers your history between sessions.

🔔

Smart notifications

Native desktop alerts with configurable threshold and cooldown. Focus mode silences reminders when you need to concentrate.

⏱️

Interval scheduling

Track continuously or on a schedule. A built-in break reminder prompts you to stand up after 50 minutes of sitting.

🗄️

Local data logging

Optional SQLite logging of every session with CSV export. All data lives on your machine — nothing is sent anywhere.

Adaptive performance

Automatically reduces camera resolution on low-end hardware. GPU acceleration toggle for faster MediaPipe inference on supported devices.

Simple by design

No complicated setup. Just your webcam and 30 seconds to calibrate.

1

Launch & calibrate

A short onboarding wizard captures a 6-second baseline of your natural posture so alerts are tuned to you, not a generic threshold.

2

Start tracking

Click "Start Tracking" from the tray icon. The icon turns green when posture is good and red when it degrades — no need to look at the app.

3

Receive alerts

When your score drops below the threshold, a native notification prompts you to sit up straight. A configurable cooldown prevents alert fatigue.

4

Review your session

Open the dashboard at any time to see your live camera feed, score history, streaks, and session stats.

Get started in minutes

Download the build for your platform — no Python or dependencies required.

  1. 1Download the .dmg for your Mac (Apple Silicon — M1/M2/M3/M4).
  2. 2Open the .dmg and drag BatesPosture into your Applications folder.
  3. 3First launch: right-click the app → Open, then click Open in the dialog. This one-time step bypasses the Gatekeeper warning for unsigned apps. Alternatively run xattr -cr /Applications/BatesPosture.app in Terminal.
  4. 4Grant camera permission when prompted (System Settings → Privacy & Security → Camera if denied by mistake).
  5. 5The app lives in your menu bar — no Dock icon by design.
  1. 1Download and extract BatesPosture-Windows.zip.
  2. 2Open the extracted BatesPosture folder and run BatesPosture.exe.
  3. 3If Windows SmartScreen appears, click More info → Run anyway. This is expected for unsigned executables.
  4. 4Grant camera permission if Windows Privacy Settings prompts you.
  5. 5The app appears in your system tray (bottom-right, near the clock). You may need to expand hidden icons.
  1. 1Download BatesPosture-Linux.tar.gz and extract it: tar -xzf BatesPosture-Linux.tar.gz
  2. 2Make the binary executable: chmod +x BatesPosture/BatesPosture
  3. 3Run it: ./BatesPosture/BatesPosture
  4. 4Ensure your desktop environment supports system-tray icons. GNOME users may need the AppIndicator extension.
  5. 5Optional: create a .desktop launcher or add to startup applications for automatic launch at login.

What you need

A webcam and a reasonably modern machine — that's it.

🍎 macOS

  • macOS 12 Monterey or later
  • Apple Silicon (M1/M2/M3/M4)
  • Built-in or USB webcam
  • Camera permission granted

🪟 Windows

  • Windows 10 or 11 (64-bit)
  • Built-in or USB webcam
  • Camera permission granted
  • Visual C++ Redistributable

🐧 Linux

  • Ubuntu 22.04+ or equivalent
  • X11 or Wayland desktop
  • Webcam accessible at /dev/video0
  • libxcb and libGL installed

Runs entirely on your machine

Your camera feed never leaves your computer.

🛡️

Zero data transmission

All pose detection runs locally using MediaPipe. No video frames, no pose data, and no personal information is ever sent to a server. Session data is stored in a local SQLite database on your machine — and only when you explicitly enable logging.