Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/phrp720/aw-sync-suite

Sync multiple ActivityWatch instances to Prometheus, centralized and visualized with Grafana.
https://github.com/phrp720/aw-sync-suite

activitywatch analytics as-a-service aw-sync-agent aw-sync-center aw-sync-suite cross-platform dashboard monitoring service sync synchronizer

Last synced: about 1 month ago
JSON representation

Sync multiple ActivityWatch instances to Prometheus, centralized and visualized with Grafana.

Awesome Lists containing this project

README

        

Aw-Sync-Suite



Open-Source Solution for Securely Syncing and Visualizing Multiple ActivityWatch Instances.


tests


build


docker build


Latest release


If you’ve ever wished for a simple, centralized solution to sync and visualize data from multiple instances of ActivityWatch, you’re in the right place.


πŸ“– For detailed documentation, visit our GitHub Wiki.

πŸ“‘ Table of Contents

1. [About](#-about)
2. [Features](#-features)
3. [Installation & Usage](#-installation--usage)
4. [Components](#-components)
- [aw-sync-agent](#aw-sync-agent)
- [aw-sync-center](#aw-sync-center)
5. [Architecture](#-architecture)
6. [Requirements](#-requirements)
7. [Contributing](#-contributing)
8. [License](#-license)

## πŸ” About
**Aw-Sync-Suite** provides an easy-to-deploy solution on syncing data from multiple [ActivityWatch](https://github.com/ActivityWatch/activitywatch) instances to a centralized [Prometheus](https://prometheus.io/) database with easy visualization in [Grafana](https://grafana.com/).

The project operates independently of **ActivityWatch** and supports all ActivityWatch versions with a REST API.

### This suite consists of two main components:
- **[aw-sync-agent](https://github.com/phrp720/aw-sync-suite/tree/master/aw-sync-agent):** Runs on each device, retrieves and filters ActivityWatch data, and sends it securely to Prometheus via remote-write.
- **[aw-sync-center](https://github.com/phrp720/aw-sync-suite/tree/master/aw-sync-center):** A centralized Prometheus and Grafana setup for aggregating and visualizing data.

### πŸ‘οΈ Preview

| ![TOP](aw-sync-center/grafana/dashboards/screenshots/summary/summary_1.png) | ![BOTTOM](aw-sync-center/grafana/dashboards/screenshots/summary/summary_2.png) |
|-----------------------------------------------------------------------------|--------------------------------------------------------------------------------|

You can check also the [screenshots](https://github.com/phrp720/aw-sync-suite/tree/master/aw-sync-center/grafana/dashboards/screenshots) for more insights.

## 🌟 Features
- 🌐 **Centralized Monitoring:** Aggregate data from multiple devices effortlessly.
- πŸ›‘οΈ **Data Filtering:** Protect sensitive information by filtering or sanitizing it at the source.
- πŸ“ **Checkpointing Mechanism:** Smart synchronization with automatic tracking of synced data.
- πŸ“ˆ **Pre-Built Dashboards:** Use intuitive Grafana dashboards for instant insights.
- βš™οΈ **Effortless Deployment:** Simple setup for both agent and central components.

## πŸš€ Installation & Usage

Downloads are available on the [releases page](https://github.com/phrp720/aw-sync-suite/releases).

For instructions on how to get started, please see the [guide in the documentation](https://github.com/phrp720/aw-sync-suite/wiki/Installation-Guide).

## 🧩 Components

### aw-sync-agent

- **Purpose**: Syncs data from ActivityWatch to Prometheus.
- **Deployment**: Run on each computer you wish to track user activity from.
- **Configuration**: Configurable via the `aw-sync-agent.yaml` file.

| Platform Support | Runs as a Service (`-service`) | General Workability |
|------------------|--------------------------------|---------------------|
| **Windows** | βœ… | βœ… |
| **Linux** | βœ… | βœ… |
| **macOS** | ❌ | βœ… |

> [!Note]
> - The **aw-sync-agent** is fully operational on **macOS**, but the `-service` feature (which allows the agent to run as a background service) is not yet implemented for macOS.
> - On macOS, you can still manually start and run the agent to sync ActivityWatch data without issues.

### aw-sync-center

- **Purpose**: Centralized cloud setup that includes Prometheus and Grafana for monitoring and visualization.
- **Deployment**: Set up once for centralized control and management.
- **Included Services**: Prometheus, Grafana, and necessary dashboards.

## πŸ“Š Architecture

Sync-Suite contains two available setups: one **without Bearer Token Authentication** and another **with Bearer Token Authentication**.

The latter provides an additional layer of security by securing the Prometheus endpoints with a Bearer token if it is exposed to the internet.
This setup uses a Nginx reverse proxy to secure the Prometheus endpoints.

| Without Bearer Token Authentication πŸ”“ | With Bearer Token Authentication πŸ” |
|---------------------------------------------|---------------------------------------------------------|
| ![aw-sync-diagram.png](aw-sync-diagram.png) | ![aw-sync-diagram-nginx.png](aw-sync-diagram-nginx.png) |

## πŸ› οΈ Requirements

- Docker and Docker Compose for easy setup of `aw-sync-center`.
- A running instance of ActivityWatch on the computers you want to monitor.

## πŸ‘₯ Contributing
Contributions are welcomed! If you have ideas, improvements, or bug fixes, feel free to open an issue or submit a pull request.

## πŸ“ License

This project is licensed under the **MIT license**.

See [LICENSE](https://github.com/phrp720/aw-sync-suite/blob/master/LICENSE) for more information.