ActivityWatch is a free, open source time & task management project written in Python and released under MPL-2.0. It has 18,919 GitHub stars, 1,012 forks and 186 open issues, and was last pushed 7 hours ago. On this registry it ranks #2 of 13 tracked projects in Time & Task Management, with 5 head-to-head comparisons available. It gained 49 stars over the last 6 tracked days.

ActivityWatch — Track time automatically with privacy-first design

What is ActivityWatch?

What it is

ActivityWatch is the free and open-source automated time tracker in the productivity and time-tracking ecosystem. It is written in Python and uses the MPL-2.0 license. The project records what a user does so the user can know how time has been spent, while keeping the data under the user's control.

The concrete problem it solves is the lack of a private, easy-to-use, high-resolution time tracker. The README says many trackers are closed source, centralized, difficult to set up, low in detail, or hard to extend. ActivityWatch addresses those gaps by storing data locally, letting users choose how much to collect, and supporting cross-platform use.

Key capabilities

  • Records the currently active application and the title of its window.
  • Records the currently active browser tab, including its title and URL.
  • Uses keyboard and mouse activity to detect whether the user is away from keyboard.
  • Stores collected activity data on the user's local machine so the user controls the data.
  • Provides a dashboard and analytics for reviewing how time was spent.
  • Runs on Windows, macOS, Linux, and Android, while iOS is listed as unsupported.
  • Supports watchers and libraries so users can extend what activity data is collected.

Who uses it and how

  • Individual users install the application and watchers to track computer and browser activity automatically.
  • Quantified-self users review application, window, browser, and AFK data to understand daily habits.
  • Productivity users use the dashboard to compare time spent across applications and websites.
  • Privacy-conscious users keep activity data local instead of sending it to a centralized service.
  • Developers and contributors build or modify watchers, libraries, and related components to collect more lifedata.

Getting started

Typical installation uses downloads from the GitHub releases page, then follows the documentation getting-started guide. Users who prefer source builds can follow the installing-from-source guide.

When to use it — and when not to

Use ActivityWatch when local data ownership, open-source code, cross-platform tracking, and extensibility matter more than finished centralized synchronization. It compares itself with RescueTime and WakaTime by keeping data under user control, and with Selfspy and ulogme by providing a graphical interface, broader platform support, and decentralized synchronization work. Avoid it if you need ready centralized synchronization, iOS support, or minimal maintenance, because a self-hoster must run the server and watchers, synchronization is work in progress, iOS is unsupported, and the repository lists 186 open issues.

project readme (upstream, from github) — read inline

Records what you do so that you can know how you've spent your time.
All in a secure way where you control the data.


WebsiteForumDocumentationReleases
Contributor statsCI overview



Do you want to receive email updates on major announcements?
Signup for the newsletter!

Table of Contents

About

The goal of ActivityWatch is simple: Enable the collection of as much valuable lifedata as possible without compromising user privacy.

We've worked towards this goal by creating an application for safe storage of the data on the user's local machine and as well as a set of watchers which record data such as:

  • Currently active application and the title of its window
  • Currently active browser tab and its title and URL
  • Keyboard and mouse activity, to detect if you are AFK ("away from keyboard") or not

It is up to you as user to collect as much as you want, or as little as you want (and we hope some of you will help write watchers so we can collect more).

Screenshots

You can find more (and newer) screenshots on the website.

Installation & Usage

Downloads are available on the releases page.

For instructions on how to get started, please see the guide in the documentation.

Interested in building from source? There's a guide for that too.

Is this yet another time tracker?

Yes, but we found that most time trackers lack one or more important features.

Common dealbreakers:

  • Not open source
  • The user does not own the data (common with non-open source options)
  • Lack of synchronization (and when available: it's centralized and the sync server knows everything)
  • Difficult to setup/use (most open source options tend to target programmers)
  • Low data resolution (low level of detail, does not store raw data, long intervals between entries)
  • Hard or impossible to extend (collecting more data is not as simple as it could be)

To sum it up:

  • Closed source solutions suffer from privacy issues and limited features.
  • Open source solutions aren't developed with end-users in mind and are usually not written to be easily extended (they lack a proper API). They also lack synchronization.

We have a plan to address all of these and we're well on our way. See the table below for our progress.

Feature comparison

Basics
User owns data GUI Sync Open Source
ActivityWatch :white_check_mark: :white_check_mark: WIP, decentralized :white_check_mark:
Selfspy :white_check_mark: :x: :x: :white_check_mark:
ulogme :white_check_mark: :white_check_mark: :x: :white_check_mark:
RescueTime :x: :white_check_mark: Centralized :x:
WakaTime :x: :white_check_mark: Centralized Clients
Platforms
Windows macOS Linux Android iOS
ActivityWatch :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x:
Selfspy :white_check_mark: :white_check_mark: :white_check_mark: :x: :x:
ulogme :x: :white_check_mark: :white_check_mark: :x: :x:
RescueTime :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: Limited functionality
Tracking
App & Window Title AFK Browser Extensions Editor Plugins Extensible
ActivityWatch :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Selfspy :white_check_mark: :white_check_mark: :x: :x: :x:
ulogme :white_check_mark: :white_check_mark: :x: :x: :x:
RescueTime :white_check_mark: :white_check_mark: :white_check_mark: :x: :x:
WakaTime :x: :white_check_mark: :white_check_mark: :white_check_mark: Only for text editors

For a complete list of the things ActivityWatch can track, see the page on watchers in the documentation

readme truncated — read the full docs on github

Frequently asked questions

Is ActivityWatch free to use?

ActivityWatch is open source under the MPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ActivityWatch do?

Track time automatically with privacy-first design

What is ActivityWatch written in?

ActivityWatch is primarily written in Python. Its source is publicly available at https://github.com/activitywatch/activitywatch, and it has 18,919 GitHub stars.