// the find
ActivityWatch/activitywatch
The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused.
ActivityWatch is a local-first, open-source time tracker that records active windows, browser tabs, and AFK status, storing everything on your machine. It's a self-hosted alternative to RescueTime or WakaTime for developers who want full ownership of their activity data. The extensible watcher architecture means you can add custom data sources if the built-ins aren't enough.
The bucket/heartbeat data model is well-designed — watchers just fire heartbeats, the server merges them into events, and the query engine handles aggregation. This makes writing a new watcher trivially simple. The parallel Rust server implementation (aw-server-rust) is a real investment in longevity, not just a rewrite for its own sake. Browser extensions plus editor plugins means actual coding time is tracked, not just 'VS Code was open.' Data export is first-class — raw JSON via API, not locked behind a UI export wizard.
Sync is still marked WIP after years — the GitHub issue is from 2016. If you work across multiple machines, you're manually wrangling Syncthing or Dropbox. The meta-repo-with-submodules structure means the main repo is mostly packaging glue; actual development is scattered across a dozen sub-repos, which makes following the project difficult. The Python server is the current default but is clearly on death row in favor of the Rust one, so you're building familiarity with something that will be replaced. The custom query scripting language is underdocumented and has a steep learning curve if you want anything beyond the built-in dashboards.