ActivityWatch

Automatically monitors device usage and records activity data with local storage for user privacy.

ActivityWatch screenshot 1

ActivityWatch is an open-source, self-hosted web app and server that automatically monitors device usage. It records activity data to help users understand how they spend their time while maintaining local control over the information. The software is designed to enable the collection of valuable lifedata without compromising user privacy by avoiding centralized cloud storage.

The software is deployed as a server and a set of watchers that run on the user's machine. It is cross-platform, supporting Windows, macOS, Linux, and Android. Users interact with their collected data through a web-based user interface that provides dashboards and timeline views for analyzing productivity and habits.

Key features

  • Tracking of the currently active application and window title
  • Monitoring of active browser tabs including titles and URLs
  • Detection of AFK status via keyboard and mouse activity
  • Local data storage to ensure user privacy and ownership
  • Support for browser extensions and editor plugins
  • REST API for programmatic access to the datastore
  • Query scripting language for filtering and transforming events
  • Decentralized synchronization capabilities

The architecture consists of a core server, available in both Python and Rust implementations, and various watchers that send heartbeat signals to the server. The server manages a datastore organized into buckets, which are containers that group related activity data by metadata such as client type or hostname. This allows the system to store high-resolution time-series data without losing raw detail. The web interface includes a query explorer for writing and debugging queries, as well as detailed breakdowns of application usage and web browsing.

Because of its modular design, the system is highly extensible. Users can develop their own watchers to collect specific types of data, and the provided client libraries in Python, JavaScript, and Rust facilitate the integration of new modules. This makes the software suitable for both general users and developers who want to customize their tracking environment.

ActivityWatch is positioned for individuals interested in the quantified-self movement who require a private, extensible, and local-first time-tracking solution.

Last Modified
Software TypeWeb App / Server
Platform
Last Activity16 days ago
Repository Age10 years
LicenseMPL-2.0
Open Source Alternative to
Open Source Software.io

Join our newsletter to get shiny new open source software delivered to your inbox. Unsubscribe anytime.