DESK WATCHER

--:--:--

your day at your desk, tracked.

desk watcher is a background app that uses your laptop camera to log what you do at your desk and shows it on a live dashboard. it runs locally and no video is ever saved.

view on github how it works
Desk Watcher dashboard showing today's at-desk time, sips, phone usage, breaks, lunch, a live timeline, and a yearly productivity heatmap.

what it tracks

  • - time away from desk, classified as short break, long break, or lunch.
  • - phone use, even when you think you're being subtle.
  • - break frequency, average length, when lunch starts and ends.
  • - a daily focus ratio you can actually defend.
  • - drinks, by the sip.

what it doesn't

  • - record or save video.
  • - upload anything anywhere.
  • - require a login, an account, or a cloud.
  • - ping a server you didn't start.
  • - know who you are. it just sees pose keypoints.

how it works

local pipeline

a watcher loop runs in the background. every frame from your camera passes through mediapipe pose to extract joint keypoints, then through a random forest trained on ~3-second windows of those keypoints. the four activity labels (at desk, sipping, on phone, away) score around 98% per-class on held-out data. a small yolo detector cross-checks the phone calls in parallel. events land in a local sqlite database. frames themselves are never stored.

camera frame pose keypoints random forest + yolo activity label sqlite dashboard

keep it tidy

collapse anything

pin only the metrics that matter to you. the dashboard gets out of the way when you're not looking at it.

The dashboard with most panels collapsed. Just the metric strip, today's timeline, and a row of collapsed panel headers.

pin what matters

your tiles, your call

pin any subset of the catalog, drop the ones you don't care about, and the dashboard remembers across sessions.

The 'Customize pins' modal listing every available metric (at-desk, on phone, lunch, sips, short breaks, long breaks, focus), each with a description and a checkbox.

privacy

local-only

the camera feed never leaves the process that reads it. frames aren't stored. only pose keypoints (the abstract dots) and event labels (at_desk, sipping, phone, away) get written to ~/.desk-watcher/events.db on your machine. delete the file and the history is gone. there is no server, no analytics, and no telemetry.

read the full privacy note

get it

the windows + mac installer is coming. for now, clone the repo, run python watcher.py in one terminal, uvicorn api:app in another, and npm run dev in the dashboard. takes about three minutes if your toolchain's awake.

view on github