DESK WATCHER

--:--:--

privacy

what desk watcher stores. what it doesn't.

last updated 2026-06-30

the short version

desk watcher runs entirely on your computer. your camera feed never leaves the process that reads it. video frames are not saved. only pose keypoints (anonymous dots) and short activity labels (at_desk, sipping, phone, away) ever get written to disk, and only to a sqlite file on your own machine. there is no server, no analytics, no telemetry, no account.

what gets stored

  • a local sqlite file at ~/.desk-watcher/events.db.
  • for each event: a start time, an end time, an activity label, and the optional pose-derived numbers used to compute it (head angle, wrist height, that sort of thing).
  • a small json of your dashboard preferences (which tiles you pinned, which panels you collapsed) in your browser's localstorage.

what doesn't get stored, ever

  • raw camera frames. they're read into memory, classified, and discarded.
  • audio. the microphone isn't touched.
  • screen contents. nothing on your screen is observed.
  • identity. desk watcher doesn't know who you are. it's pose dots and a label.

what leaves your machine

nothing. there is no outbound network call in the watcher or the api. the dashboard talks to localhost:8000 and nowhere else. if you ever see this app open a socket to a non-local address, that's a bug. file it.

how to delete everything

quit the watcher, then delete ~/.desk-watcher/events.db. that's the entire history. clear your browser's localstorage for the dashboard origin to forget your pin and panel preferences. uninstalling the app from your machine removes the rest.

when this changes

if a future version ever adds optional cloud sync (for example, to share a focus score with yourself across two laptops), it will be off by default, scoped to data you explicitly opt in, and called out on this page with a date. until then, this page describes the whole product.

questions? open an issue on github .