activitywatch README

The project's README from github.com/ActivityWatch/activitywatch. As one markdown file: README.md.

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.


Website — Forum — Documentation — Releases
Contributor stats — CI 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:

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:

To sum it up:

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.

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 --> S2[AFK status] -- Heartbeats --> aw-server;
  Browser -- Manages --> aw-watcher-web -- Watches --> S3[Active tab] -- Heartbeats --> aw-server;
  SF -- Dropbox/Syncthing/etc --> SF;
  aw-server <-- Push/Pull --> aw-sync <-- Read/Write --> SF[Sync folder];
  aw-server -- Serves --> aw-webui -- Queries --> aw-server;

  %% User -- Interacts --> aw-webui;
  %% User -- Observes --> aw-notify;
  %% User -- Interacts --> aw-qt;

classDef lightMode fill:#FFFFFF, stroke:#333333, color:#333333;
classDef darkMode fill:#333333, stroke:#FFFFFF, color:#FFFFFF;

classDef lightModeLinks stroke:#333333;
classDef darkModeLinks stroke:#FFFFFF;

class A,B,C,D,E,G lightMode;
class A,B,C,D,E,G darkMode;

%% linkStyle 0 stroke:#FF4136, stroke-width:2px;
%% linkStyle 1 stroke:#1ABC9C, stroke-width:2px;

About this repository

This repo is a bundle of the core components and official modules of ActivityWatch (managed with git submodule). Its primary use is as a meta-package providing all the components in one repo; enabling easier packaging and installation. It is also where releases of the full suite are published (see releases).

Server

ActivityWatch has two server implementations:

Both provide a REST API to a datastore and query engine, and serve the web interface developed in the aw-webui project (which provides the frontend).

The REST API includes:

The frontend (aw-webui) includes:

Watchers

ActivityWatch comes pre-installed with two watchers:

There are lots of other watchers for ActivityWatch which can track more types of activity. Like aw-watcher-web which tracks time spent on websites, multiple editor watchers which track spent time coding, and many more! A full list of watchers can be found in the documentation.

Libraries

Folder structure

Contributing

Want to help? Great! Check out the CONTRIBUTING.md file!

Questions and support

Have a question, suggestion, problem, or just want to say hi? Post on the forum!

activitywatch (ActivityWatch/activitywatch)

time-tracker
Searching Database…

What is this?ActivityWatch is a free and open-source automated time tracker. It records which apps and websites you use and how active you are, stores the data on your own machine, and shows it in a dashboard so you can see where your time actually goes.
What does it actually record about me?The currently active application and its window title, your browser tabs with their titles and URLs, and keyboard and mouse activity — the last one is how it detects that you are AFK. Extra watchers can add more sources.
How do I get it running?Download a build for your OS from the releases page and follow the getting-started guide in the documentation. Releases ship the full suite ready to run; this repo itself is a meta-package of git submodules used mainly for packaging and building from source.
Does it need an account or any online service?No — there is nothing to sign up for and no cloud service involved; the whole stack lives on your machine. Optional browser and code-editor watchers are the only extra installs if you want more than the two built-in ones.
Can I use it across several devices?Not yet: synchronization is work-in-progress, and the plan is to make it decentralized so no central server would see your data. For now, treat it as a single-machine tracker.
Which platforms does it run on?Windows, macOS, Linux and Android. iOS is not supported — the README platform table marks it as unavailable for ActivityWatch.
Does my activity ever leave my computer?No. Data is written to a local datastore and you own it — that is the project's stated goal: collect as much lifedata as possible without compromising user privacy.
How is it different from RescueTime or WakaTime?Those are closed-source services that keep your data on their servers. ActivityWatch is fully open source, you own the data locally, its planned sync is decentralized rather than centralized, and it stores raw events instead of coarse summaries.
What does the dashboard show me?A browser-based interface with a timeline and activity summaries broken down by apps, websites and user-defined categories, plus a query explorer for writing and debugging queries, raw event browsing, and JSON export of single buckets or the whole dataset.
Can I extend it or build my own tools on top?Yes. The local server exposes a REST API — buckets, events, heartbeats and a small query scripting language — with official client libraries for Python, JavaScript and Rust. Writing new watchers against aw-core and aw-client is the intended way to track more.
Size
1.8 MB
Stars
19.3K
Age
10y
Commits · 90 Days