[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2645":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},2645,"activitywatch","ActivityWatch\u002Factivitywatch","ActivityWatch","The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused.","https:\u002F\u002Factivitywatch.net\u002F",null,"Python",17858,915,127,164,0,11,77,336,54,43.89,"Mozilla Public License 2.0",false,"master",[5,26,27,28,29,30,31,32,33,34,35,36],"afk","analytics","app","cross-platform","dashboard","productivity","quantified-self","time-tracker","time-tracking","timetracker","timetracking","2026-06-12 02:00:42","\u003Cimg title=\"ActivityWatch\" src=\"https:\u002F\u002Factivitywatch.net\u002Fimg\u002Fbanner.png\" align=\"center\">\n\n\u003Cp align=\"center\">\n  \u003Cb>Records what you do\u003C\u002Fb> so that you can \u003Ci>know how you've spent your time\u003C\u002Fi>.\n  \u003Cbr>\n  All in a secure way where \u003Ci>you control the data\u003C\u002Fi>.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002FActivityWatchIt\">\n    \u003Cimg title=\"Twitter follow\" src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002FActivityWatchIt.svg?style=social&label=Follow\"\u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\">\n    \u003Cimg title=\"Star on GitHub\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FActivityWatch\u002Factivitywatch.svg?style=social&label=Star\">\n  \u003C\u002Fa>\n\n  \u003Cbr>\n\n  \u003Cb>\n    \u003Ca href=\"https:\u002F\u002Factivitywatch.net\u002F\">Website\u003C\u002Fa>\n    — \u003Ca href=\"https:\u002F\u002Fforum.activitywatch.net\u002F\">Forum\u003C\u002Fa>\n    — \u003Ca href=\"https:\u002F\u002Fdocs.activitywatch.net\">Documentation\u003C\u002Fa>\n    — \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Freleases\">Releases\u003C\u002Fa>\n  \u003C\u002Fb>\n\n  \u003Cbr>\n\n  \u003Cb>\n    \u003Ca href=\"https:\u002F\u002Factivitywatch.net\u002Fcontributors\u002F\">Contributor stats\u003C\u002Fa>\n    — \u003Ca href=\"https:\u002F\u002Factivitywatch.net\u002Fci\u002F\">CI overview\u003C\u002Fa>\n  \u003C\u002Fb>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Factions?query=branch%3Amaster\">\n    \u003Cimg title=\"Build Status GitHub\" src=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Fworkflows\u002FBuild\u002Fbadge.svg?branch=master\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fci.appveyor.com\u002Fproject\u002FErikBjare\u002Factivitywatch\">\n    \u003Cimg title=\"Build Status Appveyor\" src=\"https:\u002F\u002Fci.appveyor.com\u002Fapi\u002Fprojects\u002Fstatus\u002Fvm7g9sdfi2vgix6n?svg=true\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdocs.activitywatch.net\">\n    \u003Cimg title=\"Documentation\" src=\"https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Factivitywatch\u002Fbadge\u002F?version=latest\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Cbr>\n\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Freleases\">\n    \u003Cimg title=\"Latest release\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease-pre\u002FActivityWatch\u002Factivitywatch.svg\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Freleases\">\n    \u003Cimg title=\"Total downloads (GitHub Releases)\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FActivityWatch\u002Factivitywatch\u002Ftotal.svg\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FvDskV9q\">\n    \u003Cimg title=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F755040852727955476\" \u002F>\n  \u003C\u002Fa>\n\n  \u003Cbr>\n\n  \u003Ca href=\"https:\u002F\u002Factivitywatch.net\u002Fdonate\u002F\">\n    \u003Cimg title=\"Donated\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbudget-~%24275%2Fmo%20from%2044%20supporters-orange.svg\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.4957165\">\n    \u003Cimg src=\"https:\u002F\u002Fzenodo.org\u002Fbadge\u002FDOI\u002F10.5281\u002Fzenodo.4957165.svg\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003C!--\n# TODO: Best practices badge that we should work towards, see issue #42.\n[![CII Best Practices](https:\u002F\u002Fbestpractices.coreinfrastructure.org\u002Fprojects\u002F873\u002Fbadge)](https:\u002F\u002Fbestpractices.coreinfrastructure.org\u002Fprojects\u002F873)\n[![FOSSA Status](https:\u002F\u002Fapp.fossa.io\u002Fapi\u002Fprojects\u002Fgit%2Bhttps%3A%2F%2Fgithub.com%2FActivityWatch%2Factivitywatch.svg?type=shield)](https:\u002F\u002Fapp.fossa.io\u002Fprojects\u002Fgit%2Bhttps%3A%2F%2Fgithub.com%2FActivityWatch%2Factivitywatch?ref=badge_shield)\n-->\n\n\n*Do you want to receive email updates on major announcements?*\u003Cbr>\n***[Signup for the newsletter](http:\u002F\u002Feepurl.com\u002FcTU6QX)!***\n\n\u003Cdetails>\n \u003Csummary>Table of Contents\u003C\u002Fsummary>\n\n * [About](#about)\n    * [Screenshots](#screenshots)\n    * [Is this yet another time tracker?](#is-this-yet-another-time-tracker)\n       * [Feature comparison](#feature-comparison)\n    * [Installation &amp; Usage](#installation--usage)\n * [About this repository](#about-this-repository)\n    * [Server](#server)\n    * [Watchers](#watchers)\n    * [Libraries](#libraries)\n * [Contributing](#contributing)\n\u003C\u002Fdetails>\n\n## About\n\nThe goal of ActivityWatch is simple: *Enable the collection of as much valuable lifedata as possible without compromising user privacy.*\n\nWe'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:\n\n - Currently active application and the title of its window\n - Currently active browser tab and its title and URL\n - Keyboard and mouse activity, to detect if you are AFK (\"away from keyboard\") or not\n\nIt 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).\n\n### Screenshots\n\n\u003Cspan>\u003Cimg src=\"https:\u002F\u002Factivitywatch.net\u002Fimg\u002Fscreenshots\u002Fscreenshot-v0.9.3-activity.png\"   width=\"45%\">\u003C\u002Fspan>\n\u003Cspan>\u003Cimg src=\"https:\u002F\u002Factivitywatch.net\u002Fimg\u002Fscreenshots\u002Fscreenshot-v0.8.0b9-timeline.png\" width=\"50%\">\u003C\u002Fspan>\n\nYou can find more (and newer) screenshots on [the website](https:\u002F\u002Factivitywatch.net\u002Fscreenshots\u002F).\n\n\n## Installation & Usage\n\nDownloads are available on the [releases page](https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Freleases).\n\nFor instructions on how to get started, please see the [guide in the documentation](https:\u002F\u002Fdocs.activitywatch.net\u002Fen\u002Flatest\u002Fgetting-started.html).\n\nInterested in building from source? [There's a guide for that too](https:\u002F\u002Fdocs.activitywatch.net\u002Fen\u002Flatest\u002Finstalling-from-source.html).\n\n## Is this yet another time tracker?\n\nYes, but we found that most time trackers lack one or more important features.\n\n**Common dealbreakers:**\n\n - Not open source\n - The user does not own the data (common with non-open source options)\n - Lack of synchronization (and when available: it's centralized and the sync server knows everything)\n - Difficult to setup\u002Fuse (most open source options tend to target programmers)\n - Low data resolution (low level of detail, does not store raw data, long intervals between entries)\n - Hard or impossible to extend (collecting more data is not as simple as it could be)\n\n**To sum it up:**\n\n - Closed source solutions suffer from privacy issues and limited features.\n - 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.\n\nWe have a plan to address all of these and we're well on our way. See the table below for our progress.\n\n\n### Feature comparison\n\n##### Basics\n\n|               | User owns data     | GUI                | Sync                       | Open Source        |\n| ------------- |:------------------:|:------------------:|:--------------------------:|:------------------:|\n| ActivityWatch | :white_check_mark: | :white_check_mark: | [WIP][sync], decentralized | :white_check_mark: |\n| [Selfspy]       | :white_check_mark: | :x:                | :x:                        | :white_check_mark: |\n| [ulogme]        | :white_check_mark: | :white_check_mark: | :x:                        | :white_check_mark: |\n| [RescueTime]    | :x:                | :white_check_mark: | Centralized                | :x:                |\n| [WakaTime]      | :x:                | :white_check_mark: | Centralized                | Clients            |\n\n[sync]: https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Fissues\u002F35\n[Selfspy]: https:\u002F\u002Fgithub.com\u002Fselfspy\u002Fselfspy\n[ulogme]: https:\u002F\u002Fgithub.com\u002Fkarpathy\u002Fulogme\n[RescueTime]: https:\u002F\u002Fwww.rescuetime.com\u002F\n[WakaTime]: https:\u002F\u002Fwakatime.com\u002F\n\n##### Platforms\n\u003C!-- TODO: Replace Platform names with icons  -->\n\n|               | Windows            | macOS              | Linux              | Android            | iOS                 |\n| ------------- |:------------------:|:------------------:|:------------------:|:------------------:|:-------------------:|\n| ActivityWatch | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:x:                  |\n| Selfspy       | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x:                |:x:                  |\n| ulogme        | :x:                | :white_check_mark: | :white_check_mark: | :x:                |:x:                  |\n| RescueTime    | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |Limited functionality|\n\n##### Tracking\n\n|               | App & Window Title | AFK                | Browser Extensions | Editor Plugins     | Extensible            |\n| ------------- |:------------------:|:------------------:|:------------------:|:------------------:|:---------------------:|\n| ActivityWatch | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark:    |\n| Selfspy       | :white_check_mark: | :white_check_mark: | :x:                | :x:                | :x:                   |\n| ulogme        | :white_check_mark: | :white_check_mark: | :x:                | :x:                | :x:                   |\n| RescueTime    | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x:                | :x:                   |\n| WakaTime      | :x:                | :white_check_mark: | :white_check_mark: | :white_check_mark: | Only for text editors |\n\nFor a complete list of the things ActivityWatch can track, [see the page on *watchers* in the documentation](https:\u002F\u002Fdocs.activitywatch.net\u002Fen\u002Flatest\u002Fwatchers.html).\n\n\n## Architecture\n\n```mermaid\ngraph TD;\n  aw-qt[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-qt'>aw-qt\u003C\u002Fa>];\n  aw-notify[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-notify-rs'>aw-notify\u003C\u002Fa>];\n  aw-server[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-server'>aw-server\u003C\u002Fa>];\n  aw-webui[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-webui'>aw-webui\u003C\u002Fa>];\n  aw-watcher-window[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-watcher-window'>aw-watcher-window\u003C\u002Fa>];\n  aw-watcher-afk[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-watcher-afk'>aw-watcher-afk\u003C\u002Fa>];\n  aw-watcher-web[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-watcher-web'>aw-watcher-web\u003C\u002Fa>];\n  aw-sync[\u003Ca href='https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Faw-server-rust\u002Ftree\u002Fmaster\u002Faw-sync'>aw-sync\u003C\u002Fa>];\n\n  aw-qt -- Manages --> aw-server;\n  aw-qt -- Manages --> aw-notify -- Queries --> aw-server;\n  aw-qt -- Manages --> aw-watcher-window -- Watches --> S1[Active window] -- Heartbeats --> aw-server;\n  aw-qt -- Manages --> aw-watcher-afk -- Watches --> S2[AFK status] -- Heartbeats --> aw-server;\n  Browser -- Manages --> aw-watcher-web -- Watches --> S3[Active tab] -- Heartbeats --> aw-server;\n  SF -- Dropbox\u002FSyncthing\u002Fetc --> SF;\n  aw-server \u003C-- Push\u002FPull --> aw-sync \u003C-- Read\u002FWrite --> SF[Sync folder];\n  aw-server -- Serves --> aw-webui -- Queries --> aw-server;\n\n  %% User -- Interacts --> aw-webui;\n  %% User -- Observes --> aw-notify;\n  %% User -- Interacts --> aw-qt;\n\nclassDef lightMode fill:#FFFFFF, stroke:#333333, color:#333333;\nclassDef darkMode fill:#333333, stroke:#FFFFFF, color:#FFFFFF;\n\nclassDef lightModeLinks stroke:#333333;\nclassDef darkModeLinks stroke:#FFFFFF;\n\nclass A,B,C,D,E,G lightMode;\nclass A,B,C,D,E,G darkMode;\n\n%% linkStyle 0 stroke:#FF4136, stroke-width:2px;\n%% linkStyle 1 stroke:#1ABC9C, stroke-width:2px;\n```\n\n## About this repository\n\nThis 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](https:\u002F\u002Fgithub.com\u002FActivityWatch\u002Factivitywatch\u002Freleases)).\n\n### Server\n\nActivityWatch has two server implementations:\n\n- `aw-server` (Python) - The current default implementation\n- `aw-server-rust` - A Rust implementation that is the planned future default\n\nBoth 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).\n\nThe REST API includes:\n\n - Access to a datastore suitable for timeseries\u002Ftimeperiod-data organized in \"buckets\" (containers grouping related activity data by metadata like client type or hostname)\n - **Buckets API:** Create, retrieve, and delete data buckets\n - **Events API:** Read and write timestamped events within buckets\n - **Heartbeat API:** Watchers use heartbeat signals to update the current state of activity (e.g., active application, AFK status)\n - **Query API:** simple query scripting language for filtering, merging, grouping, and transforming events\n - **Client libraries:** Language-specific libraries like `aw-client` (Python), `aw-client-js`, and `aw-client-rust` that wrap REST endpoints for programmatic access\n\nThe frontend (`aw-webui`) includes:\n\n - **Data visualization:** Dashboard and timeline views showing activity summaries with detailed breakdowns of app usage, web browsing, and user-defined categories\n - **Query explorer:** Browser-based interface for writing, executing, and debugging queries with real-time results\n - **Activity browser:** Navigate through historical data with filtering by date ranges, applications, websites, and custom categories\n - **Raw data access:** View and browse individual events from all tracking buckets with detailed metadata\n - **Export functionality:** Export activity data in JSON format (individual buckets or complete datasets) via web interface or REST API\n\n### Watchers\n\nActivityWatch comes pre-installed with two watchers:\n\n - `aw-watcher-afk` tracks the user active\u002Finactive state from keyboard and mouse input\n - `aw-watcher-window` tracks the currently active application and its window title.\n\nThere 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](https:\u002F\u002Fdocs.activitywatch.net\u002Fen\u002Flatest\u002Fwatchers.html).\n\n### Libraries\n\n - `aw-core` - core library, provides no runnable modules\n - `aw-client` - client library, useful when writing watchers\n\n### Folder structure\n\n\u003Cspan>\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FActivityWatch\u002Factivitywatch\u002Fmaster\u002Fdiagram.svg\" width=\"60%\">\u003C\u002Fspan>\n\n## Contributing\n\nWant to help? Great! Check out the [CONTRIBUTING.md file](.\u002FCONTRIBUTING.md)!\n\n## Questions and support\n\nHave a question, suggestion, problem, or just want to say hi? Post on [the forum](https:\u002F\u002Fforum.activitywatch.net\u002F)!\n\n","ActivityWatch 是一个免费且开源的自动化时间跟踪工具，旨在跨平台记录用户的活动。它使用 Python 语言开发，具备高度可扩展性和注重隐私保护的特点，所有数据都由用户自己控制。该工具能够自动记录你在不同应用和网站上花费的时间，并通过直观的仪表板展示出来，帮助你更好地了解自己的时间分配情况。非常适合需要提高工作效率、进行个人时间管理或希望量化自我行为分析的人士使用。",2,"2026-06-11 02:50:38","top_language"]