It watches only when you say so.
You start a focus block from the sidebar — 5 to 120 minutes. Outside of that, the camera is off. There is no background daemon.
1002 watches through your webcam during the focus blocks you choose. It notices when you pick up your phone, when you leave your desk, and — at the end — hands back an honest score. No cloud. No telemetry. Just you and the work.
Works on any phone or laptop · Camera stays on your device

You start a focus block from the sidebar — 5 to 120 minutes. Outside of that, the camera is off. There is no background daemon.
YOLOv8 flags the phone the moment it enters frame. MediaPipe flags the empty chair. Short glances and quick stretches are forgiven by grace windows.
0–100, plus a minute-by-minute timeline of where you drifted, plus a weekly line telling you whether you're actually getting better.
Each dependency does one job it's the best in the world at, and none of them phone home.
Unzip the download, drop into the folder, and follow along. Streamlit opens the dashboard in your browser at localhost:8501.
cd focusguard python -m venv .venv source .venv/bin/activate pip install -r requirements.txt streamlit run app.py
First launch downloads yolov8n.pt (~6 MB). That's the only network call the app will ever make.
Frames are analyzed in memory and discarded — never written to disk, never uploaded. Session records live in a plain SQLite file at ~/.1002/sessions.db. Delete it whenever, or clear it from the dashboard.