• Stars
    star
    10,927
  • Rank 3,104 (Top 0.07 %)
  • Language
    Python
  • License
    Mozilla Public Li...
  • Created over 8 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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 WIP, decentralized
Selfspy
ulogme
RescueTime Centralized
WakaTime Centralized Clients
Platforms
Windows macOS Linux Android iOS
ActivityWatch
Selfspy
ulogme
RescueTime Limited functionality
Tracking
App & Window Title AFK Browser Extensions Editor Plugins Extensible
ActivityWatch
Selfspy
ulogme
RescueTime
WakaTime Only for text editors

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

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

aw-server is the official implementation of the core service which the other ActivityWatch services interact with. It provides a REST API to a datastore and query engine. It also serves the web interface developed in the aw-webui project (which provides the frontend part of the webapp).

The REST API includes:

  • Access to a datastore suitable for timeseries/timeperiod-data
  • A query engine and language for such data

The webapp includes:

  • Data visualization & browser
  • Query explorer
  • Export functionality

Watchers

ActivityWatch comes pre-installed with two watchers:

  • aw-watcher-afk tracks the user active/inactive state from keyboard and mouse input
  • aw-watcher-window tracks the currently active application and its window title.

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

  • aw-core - core library, provides no runnable modules
  • aw-client - client library, useful when writing watchers

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!

More Repositories

1

aw-watcher-web

Browser watcher for ActivityWatch
JavaScript
280
star
2

aw-watcher-vscode

TypeScript
172
star
3

aw-server-rust

High-performance implementation of the ActivityWatch server, written in Rust
Rust
164
star
4

aw-android

ActivityWatch for Android, using aw-server-rust as backend.
Kotlin
152
star
5

aw-watcher-vim

Vim Script
105
star
6

aw-webui

Webapp for visualizing and browsing ActivityWatch data, built with Vue.js.
Vue
99
star
7

aw-watcher-input

Track your keypresses and mouse movements with ActivityWatch
Python
95
star
8

aw-server

ActivityWatch server for storage of all your Quantified Self data.
Python
83
star
9

aw-watcher-window

Cross-platform window watcher (for use with ActivityWatch)
Python
80
star
10

aw-watcher-spotify

Logs what you listen to on Spotify
Python
65
star
11

aw-watcher-window-wayland

WIP window and afk watcher for wayland
Rust
55
star
12

aw-core

Core library for ActivityWatch
Python
47
star
13

aw-watcher-afk

Watches keyboard and mouse activity to determine if you are AFK or not (for use with ActivityWatch)
Python
42
star
14

aw-client

Client library for ActivityWatch
Python
40
star
15

aw-import-screentime

Import data from Apple's Screen Time on macOS and iOS to ActivityWatch
Python
28
star
16

aw-client-js

Client library for ActivityWatch in JavaScript
TypeScript
28
star
17

aw-qt

Tray icon that manages ActivityWatch processes, built with Qt.
Python
27
star
18

awesome-activitywatch

A list of awesome ActivityWatch resources
27
star
19

aw-research

Tools to analyse and experiment with ActivityWatch data
Python
25
star
20

docs

Documentation for ActivityWatch
Python
24
star
21

activitywatch-old

[DEPRECATED] ⌚ Logs your computer activities, a RescueTime replacement.
Python
16
star
22

aw-import-ical

Python
13
star
23

aw-tauri

WIP ActivityWatch distribution using Tauri
Rust
10
star
24

activitywatch.github.io

Official website for ActivityWatch
HTML
10
star
25

aur-activitywatch-bin

AUR/Arch package for precompiled versions of ActivityWatch
Shell
9
star
26

aw-watcher-tmux

Basic bash-based tmux watcher
Shell
7
star
27

aw-watcher-network

This watcher should watch current networks, starting with ping
Python
7
star
28

stats

A repo for collecting stats about the project
Python
7
star
29

aw-notify

Desktop notifications for ActivityWatch
Python
6
star
30

aw-fakedata

A minimal activitywatch client that generates fakedata
Python
6
star
31

aw-watcher-openvr

[WIP] Watcher for OpenVR
Python
6
star
32

activityscraper

Scrapes the activity the user is experiencing
6
star
33

contributor-stats

Generating contributor stats for the ActivityWatch project
Python
5
star
34

aw-watcher-chromecast

[WIP] Chromecast watcher for Activitywatch
Python
4
star
35

slides

A brief overview of ActivityWatch
JavaScript
4
star
36

aw-importer-smartertime

Convert an export file from SmarterTime to an ActivityWatch bucket
Python
3
star
37

aw-detector

A simple client to aw-server that checks if the latest event in some bucket matches a pattern.
Python
3
star
38

aw-leaderboard-rust

Public leaderboard for ActivityWatch stats
Rust
3
star
39

aw-watcher-sway

Prototype window+afk watcher for the Sway window manager
Rust
3
star
40

deb-activitywatch-bin

.deb package generation for Debian/Ubuntu
Shell
3
star
41

aw-leaderboard-firebase

Prototype of aw-leaderboard using Firebase
TypeScript
2
star
42

wheels

A repository containing wheels used by build scripts
2
star
43

aw-rust

An experiment implementing aw-server in Rust
Rust
2
star
44

media

Images and fonts used in ActivityWatch projects
Shell
2
star
45

aw-syncthing

[ABANDONED] Syncs your aw-server data with Syncthing
Python
2
star
46

aw-client-rust

[DEPRECATED] aw-client written in rust
Rust
2
star
47

aw-watcher-macos

[DEPRECATED] Window watcher for macOS
Python
2
star
48

setup-action

GitHub Action for setting up ActivityWatch, optionally with generated fake data
Shell
1
star
49

aw-watcher-x11

[DEPRECATED] Watches which windows you have open in X11 (Linux)
Python
1
star