free & open source / pip install batesposture
BatesPosture uses your webcam and MediaPipe to score your posture every second — entirely on your machine. No cloud, no subscriptions, no tracking. Install in seconds with pip.
A focused tool that stays out of your way until your posture needs attention.
Seven weighted metrics — head tilt, neck angle, shoulder balance, spine alignment — combined into a single colour-coded score in your tray icon.
Sparkline history, session average, min/max, best streak, and duration — all in a floating window that remembers your history between sessions.
Native desktop alerts with configurable threshold and cooldown. Focus mode silences reminders when you need to concentrate.
Track continuously or on a schedule. A built-in break reminder prompts you to stand up after 50 minutes of sitting.
Optional SQLite logging of every session with CSV export. All data lives on your machine — nothing is sent anywhere.
Automatically reduces camera resolution on low-end hardware. GPU acceleration toggle for faster MediaPipe inference on supported devices.
No complicated setup. Just your webcam and 30 seconds to calibrate.
A short onboarding wizard captures a 6-second baseline of your natural posture so alerts are tuned to you, not a generic threshold.
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.
When your score drops below the threshold, a native notification prompts you to sit up straight. A configurable cooldown prevents alert fatigue.
Open the dashboard at any time to see your live camera feed, score history, streaks, and session stats.
Distributed via PyPI — no unsigned binaries, no SmartScreen warnings. Requires Python 3.10+ and pip.
pip install batesposturebatesposturegit clone https://github.com/wtbates99/batesposture.git && cd batespostureuv syncuv run python -m batespostureA webcam and a reasonably modern machine — that's it.
Your camera feed never leaves your computer.
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.