ActivityWatch/activitywatch
ActivityWatch/activitywatch has 19,508 GitHub stars and 1,074 forks. GitHot measured +12 stars in 24 hours, +78 in 7 days, and +190 in 15 days. Last checked 2026-11-05 07:24 UTC. Last push 2026-11-01.
최고의 자유 오픈 소스 자동 시간 추적 도구. 크로스 플랫폼을 지원하고 확장할 수 있으며 개인정보 보호에 중점을 둡니다.
측정된 스타 증가
- in 24h
- +12
- in 7 days
- +78
- in 15 days
- +190
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
Original
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:
- 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

Screenshots of v0.14.0 with demo data (generated with make screenshots). Find more, including dark mode, Android, and how it has evolved over the versions, on the website.
How to cite ActivityWatch
If you use ActivityWatch in your research, please cite it. This helps us track academic impact and keeps the project sustainable. The canonical reference is the Zenodo DOI:
Ready-to-paste BibTeX for your methods section:
@software{activitywatch,
author = {Bjäreholt, Erik and Bjäreholt, Johan},
title = {ActivityWatch},
year = {2026},
publisher = {Zenodo},
version = {0.14.0},
doi = {10.5281/zenodo.4957165},
url = {https://github.com/ActivityWatch/activitywatch}
}
If you publish a paper that uses ActivityWatch, we would love to hear about it — please let us know on the forum.
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.
Architecture
graph TD;
aw-qt[<a href='https://github.com/ActivityWatch/aw-qt'>aw-qt</a><br/>or<br/><a href='https://github.com/ActivityWatch/aw-tauri'>aw-tauri</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><br/>or<br/><a href='https://github.com/ActivityWatch/aw-server-rust'>aw-server-rust</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:
aw-server(Python) - The current default implementationaw-server-rust- A Rust implementation that is the planned future default
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:
- Access to a datastore suitable for timeseries/timeperiod-data organized in "buckets" (containers grouping related activity data by metadata like client type or hostname)
- Buckets API: Create, retrieve, and delete data buckets
- Events API: Read and write timestamped events within buckets
- Heartbeat API: Watchers use heartbeat signals to update the current state of activity (e.g., active application, AFK status)
- Query API: simple query scripting language for filtering, merging, grouping, and transforming events
- Client libraries: Language-specific libraries like
aw-client(Python),aw-client-js, andaw-client-rustthat wrap REST endpoints for programmatic access
The frontend (aw-webui) includes:
- Data visualization: Dashboard and timeline views showing activity summaries with detailed breakdowns of app usage, web browsing, and user-defined categories
- Query explorer: Browser-based interface for writing, executing, and debugging queries with real-time results
- Activity browser: Navigate through historical data with filtering by date ranges, applications, websites, and custom categories
- Raw data access: View and browse individual events from all tracking buckets with detailed metadata
- Export functionality: Export activity data in JSON format (individual buckets or complete datasets) via web interface or REST API
Watchers
ActivityWatch comes pre-installed with two watchers:
aw-watcher-afktracks the user active/inactive state from keyboard and mouse inputaw-watcher-windowtracks 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 modulesaw-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!
관련 프로젝트 살펴보기
n8n-io/n8n
네이티브 AI 기능을 갖춘 Fair-code 워크플로 자동화 플랫폼입니다. 시각적 구성과 사용자 지정 코드를 결합할 수 있으며, 직접 호스팅하거나 클라우드에서 사용할 수 있고 400개 이상의 연동을 제공합니다.
209,621 스타langgenius/dify
하나의 협업 워크스페이스에서 에이전트 워크플로와 RAG 파이프라인을 구축하고, 풍부한 AI 모델과 도구를 지원합니다. 클라우드, VPC 또는 자체 호스팅으로 배포할 수 있어 팀은 스택을 다시 구축하지 않고 프로토타입에서 프로덕션으로 이동할 수 있습니다.
160,424 스타microsoft/PowerToys
Microsoft PowerToys는 Windows의 생산성과 사용자 지정 기능을 향상하는 유틸리티 모음입니다
140,594 스타stablyai/orca
Orca는 에이전트 집단(예: Grok Bot, Claude Code)과 함께 작업하는 곳입니다. 본인의 구독으로 어떤 코딩 에이전트든 실행할 수 있습니다. 데스크톱, 모바일, 원격 런타임에서 사용할 수 있습니다.
116,391 스타