wtbates99/batesposture
wtbates99/batesposture has 26 GitHub stars and 2 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-13 04:32 UTC. Last push 2026-10-31.
Local-first desktop posture monitor with real-time webcam scoring, personal calibration, and private on-device processing.
측정된 스타 증가
- in 24h
- 0
- in 7 days
- 기록 수집 중
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
OriginalBatesPosture
A local-first desktop posture monitor. Webcam in, private posture feedback out.
Install · How it works · Privacy · License

BatesPosture watches a webcam locally, scores posture from 0–100, and sends a native notification when posture drops below a personal threshold. Calibration tunes the measurements to the person using the app. There are no accounts, cloud uploads, or telemetry.
What it provides
| Capability | Behavior |
|---|---|
| Live score | Seven weighted pose metrics become a color-coded 0–100 tray score |
| Personal calibration | A six-second baseline adjusts feedback to the user's natural posture |
| Session dashboard | History, average, minimum, maximum, best streak, and duration |
| Smart alerts | Native notifications with threshold, cooldown, and focus controls |
| Scheduling | Continuous or interval tracking plus configurable break reminders |
| Local history | Optional SQLite logging and CSV export |
| Adaptive processing | Frame-size and performance controls for slower hardware |
| Auto-pause | Away-from-desk time is excluded when no person is detected |

Install
Requires Python 3.11 or newer, uv, and a webcam.
git clone https://github.com/wtbates99/batesposture.git
cd batesposture
uv sync --locked --all-groups
uv run batesposture
Grant camera permission and complete the calibration when prompted.
Linux system packages
On Debian or Ubuntu:
sudo apt-get update
sudo apt-get install -y \
libgl1 libglib2.0-0 \
libxcb-xinerama0 libxcb-cursor0 libxcb-icccm4 libxcb-image0 \
libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 \
libxcb-xfixes0 libxkbcommon-x11-0 libegl1 libgles2
GNOME users may also need an AppIndicator extension for the tray icon.
How it works
- Calibrate — capture a six-second baseline of the user's natural posture.
- Track — MediaPipe landmarks feed seven geometric measurements.
- Score — weighted measurements produce one 0–100 posture score.
- Alert — a sustained low score triggers a cooldown-controlled notification.
- Review — the dashboard shows the current session and optional saved history.
Configuration
Settings are available in the desktop UI and through environment variables:
POSTURE_RUNTIME_DEFAULT_CAMERA_ID=1 uv run batesposture
POSTURE_RUNTIME_DEFAULT_FPS=15 uv run batesposture
POSTURE_RUNTIME_POOR_POSTURE_THRESHOLD=55 uv run batesposture
Environment names follow POSTURE_<SECTION>_<FIELD> for runtime, ML, and
profile settings.
Privacy
- Video frames are processed locally and are not uploaded.
- Posture data does not leave the machine.
- There are no accounts, analytics, or telemetry.
- The MediaPipe pose model is downloaded once from Google's model storage on first use and cached locally; no data is sent.
- SQLite logging is opt-in and disabled by default.
- README screenshots use synthetic imagery and contain no biometric data.
Data locations vary by platform:
| Data | Location |
|---|---|
| Database, lock, and pose models | Linux ~/.local/share/BatesPosture/; macOS application support; Windows %APPDATA% |
| Logs | macOS ~/Library/Logs/BatesPosture/app.log; other platforms ~/.batesposture_logs/app.log |
| CSV exports | ~/posture_export_YYYYMMDD_HHMMSS.csv |
Development
uv sync --locked --all-groups
QT_QPA_PLATFORM=offscreen uv run python -m pytest
uv run pre-commit run --all-files
uv build
Troubleshooting
- Camera does not open: close other camera applications or try camera index
1. - Tracking pauses: make sure the head and shoulders are visible and evenly lit.
- Performance is poor: lower FPS or frame size and enable adaptive resolution.
- CSV export is empty: enable database logging before recording a session.
License
BatesPosture is source available under the PolyForm Noncommercial License 1.0.0. Personal and noncommercial use is permitted under those terms. Commercial use requires a separate license.
Earlier revisions remain governed by the terms under which they were published; see license history.
관련 프로젝트 살펴보기
trimstray/the-book-of-secret-knowledge
영감을 주는 목록, 매뉴얼, 치트시트, 블로그, 팁, 원라이너, CLI/웹 도구 등을 모은 컬렉션.
258,134 스타Hack-with-Github/Awesome-Hacking
해커, 펜테스터, 보안 연구자를 위한 다양한 Awesome 목록 모음.
125,360 스타swisskyrepo/PayloadsAllTheThings
웹 애플리케이션 보안과 모의 침투 테스트/CTF에 유용한 페이로드 및 우회 방법 목록.
82,623 스타caddyserver/caddy
빠르고 확장 가능한 멀티플랫폼 HTTP/1-2-3 웹 서버이며, 자동 HTTPS를 지원합니다
79,020 스타