Syncing data from multiple ActivityWatch instances in a centralized way

Inspired by ActivityWatch and as part of my research, I developed an ActivityWatch Data Synchronizer, aimed at addressing the need for centralized monitoring and visualization of user activity data from multiple devices (currently available only for computers).

This project offers a centralized solution for syncing and visualizing data from multiple ActivityWatch instances. It integrates with ActivityWatch’s REST API, aggregates the data, and pushes it via the remote-write API to a Prometheus database, providing insights through Grafana dashboards.

The project consists of two main components:

  • Agent: A lightweight agent that runs on devices to securely collect, filter, and push ActivityWatch data to Prometheus. It can run as a standalone, service or docker-image.
  • Central: A centralized Prometheus + Grafana setup for aggregating and visualizing user activity data.

Key features include:

  • Secure syncing and visualization of multiple ActivityWatch instances.
  • Centralized monitoring for multiple devices.
  • Data filtering for enhanced privacy and control.
  • Categorization of data.
  • Pre-built Grafana dashboards based on the ActivityWatch UI.
  • Support for multiple hosts for a single user, allowing data to be organized by host.
  • Visualization options in the dashboard enable the selection of one or more criteria, including User, Host, and Category, to customize insights according to specific needs.

A preview of the Grafana dashboard, showcasing how users’ activity data is visualized can be found here and here.

I would be honored if you could take a look at the project and share any feedback or suggestions.

While ActivityWatch Sync excels as a decentralized solution, I hope this project can serve as just a complementary addition for those who seek a centralized way to manage and visualize data across multiple ActivityWatch instances.

Thank you for your time, and I hope you find this project helpful!

3 Likes

Awesome work! Really impressive.

I added it to GitHub - ActivityWatch/awesome-activitywatch: A list of awesome ActivityWatch resources

I’ve played around with ActivityWatch data in Grafana before, but never got it working as I wanted (I am a total Grafana noob).

I really liked the screenshots:

1 Like

I’m looking forward to giving it a whirl and will report back once it’s up and running (or if I get stuck lol). Thanks for sharing!

1 Like

how about an aggregate “context switching” score as some kind of wholistic catch-all number to keep an eye on daily?

while all the AW data detail is fun, I still find it difficult to intuit where I spend my attention; probably because of the focusing illusion(?)

whenever flow kicks in, the experience of time gets distorted: Flow Research - Insights, Data and Findings

so comprehending the quality of attention during the day is quite challenging still; not sure what’s missing to add to the AW data (which I find essential, but appears to not be sufficient)