SkillAgentSearch skills...

Activitywatch

The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused.

Install / Use

/learn @ActivityWatch/Activitywatch

README

<img title="ActivityWatch" src="https://activitywatch.net/img/banner.png" align="center"> <p align="center"> <b>Records what you do</b> so that you can <i>know how you've spent your time</i>. <br> All in a secure way where <i>you control the data</i>. </p> <p align="center"> <a href="https://twitter.com/ActivityWatchIt"> <img title="Twitter follow" src="https://img.shields.io/twitter/follow/ActivityWatchIt.svg?style=social&label=Follow"/> </a> <a href="https://github.com/ActivityWatch/activitywatch"> <img title="Star on GitHub" src="https://img.shields.io/github/stars/ActivityWatch/activitywatch.svg?style=social&label=Star"> </a> <br> <b> <a href="https://activitywatch.net/">Website</a> — <a href="https://forum.activitywatch.net/">Forum</a> — <a href="https://docs.activitywatch.net">Documentation</a> — <a href="https://github.com/ActivityWatch/activitywatch/releases">Releases</a> </b> <br> <b> <a href="https://activitywatch.net/contributors/">Contributor stats</a> — <a href="https://activitywatch.net/ci/">CI overview</a> </b> </p> <p align="center"> <a href="https://github.com/ActivityWatch/activitywatch/actions?query=branch%3Amaster"> <img title="Build Status GitHub" src="https://github.com/ActivityWatch/activitywatch/workflows/Build/badge.svg?branch=master" /> </a> <a href="https://ci.appveyor.com/project/ErikBjare/activitywatch"> <img title="Build Status Appveyor" src="https://ci.appveyor.com/api/projects/status/vm7g9sdfi2vgix6n?svg=true" /> </a> <a href="https://docs.activitywatch.net"> <img title="Documentation" src="https://readthedocs.org/projects/activitywatch/badge/?version=latest" /> </a> <br> <a href="https://github.com/ActivityWatch/activitywatch/releases"> <img title="Latest release" src="https://img.shields.io/github/release-pre/ActivityWatch/activitywatch.svg"> </a> <a href="https://github.com/ActivityWatch/activitywatch/releases"> <img title="Total downloads (GitHub Releases)" src="https://img.shields.io/github/downloads/ActivityWatch/activitywatch/total.svg" /> </a> <a href="https://discord.gg/vDskV9q"> <img title="Discord" src="https://img.shields.io/discord/755040852727955476" /> </a> <br> <a href="https://activitywatch.net/donate/"> <img title="Donated" src="https://img.shields.io/badge/budget-%24201%2Fmo%20from%2040%20supporters-orange.svg" /> </a> <a href="https://doi.org/10.5281/zenodo.4957165"> <img src="https://zenodo.org/badge/DOI/10.5281/zenodo.4957165.svg" /> </a> </p> <!-- # TODO: Best practices badge that we should work towards, see issue #42. [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/873/badge)](https://bestpractices.coreinfrastructure.org/projects/873) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2FActivityWatch%2Factivitywatch.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2FActivityWatch%2Factivitywatch?ref=badge_shield) -->

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

<details> <summary>Table of Contents</summary> </details>

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

<span><img src="https://activitywatch.net/img/screenshots/screenshot-v0.9.3-activity.png" width="45%"></span> <span><img src="https://activitywatch.net/img/screenshots/screenshot-v0.8.0b9-timeline.png" width="50%"></span>

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
<!-- TODO: Replace Platform names with icons -->

| | 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.

Architecture

graph TD;
  aw-qt[<a href='https://github.com/ActivityWatch/aw-qt'>aw-qt</a>];
  aw-notify[<a href='https://github.com/ActivityWatch/aw-notify-rs'>aw-notify</a>];
  aw-server[<a href='https://github.com/ActivityWatch/aw-server'>aw-server</a>];
  aw-webui[<a href='https://github.com/ActivityWatch/aw-webui'>aw-webui</a>];
  aw-watcher-window[<a href='https://github.com/ActivityWatch/aw-watcher-window'>aw-watcher-window</a>];
  aw-watcher-afk[<a href='https://github.com/ActivityWatch/aw-watcher-afk'>aw-watcher-afk</a>];
  aw-watcher-web[<a href='https://github.com/ActivityWatch/aw-watcher-web'>aw-watcher-web</a>];
  aw-sync[<a href='https://github.com/ActivityWatch/aw-server-rust/tree/master/aw-sync'>aw-sync</a>];

  aw-qt -- Manages --> aw-server;
  aw-qt -- Manages --> aw-notify -- Queries --> aw-server;
  aw-qt -- Manages --> aw-watcher-window -- Watches --> S1[Active window] -- Heartbeats --> aw-server;
  aw-qt -- Manages --> aw-watcher-afk -- Watches --

Related Skills

View on GitHub
GitHub Stars17.1k
CategoryData
Updated38m ago
Forks854

Languages

Python

Security Score

100/100

Audited on Mar 25, 2026

No findings