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

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: 30 days 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-suite-plugins](#-aw-sync-suite-plugins)
- [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.

### πŸ‘οΈ 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.
- πŸ”Œ **Plugin Mechanism:** Use the pre-built plugins or create your own for custom data processing.
- πŸ“ˆ **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](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.

- **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-settings.yaml` file and its [plugins](https://github.com/phrp720/aw-sync-suite-plugins).

| 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-suite-plugins](https://github.com/phrp720/aw-sync-suite-plugins)

The `aw-sync-suite` supports a range of plugins that allow for custom data processing before pushing the data to Prometheus. You can utilize these plugins to enhance your data synchronization capabilities.

- **Purpose**: Plugins enable pre-processing of ActivityWatch data, allowing for filtering, transformation, and custom handling based on specific requirements(read more on how they work [here](https://github.com/phrp720/aw-sync-suite/wiki/Agent-Plugins)).
- **Integration**: Easily configurable within the `aw-sync-agent` through the `aw-sync-settings.yaml` file and their configuration files.
- **Repository**: For a list of available plugins and their usage, visit the [aw-sync-suite-plugins repository](https://github.com/phrp720/aw-sync-suite-plugins).

#### How to Use Plugins

1. **Add the Plugin**: Ensure the desired plugin is available in the `aw-sync-suite-plugins` repository and modify the `aw-sync-settings.yaml` file to include the plugin.
2. **Configure the Plugin**: If the plugin is configurable add the plugin configuration in the `config` folder to configure the plugin settings.
3. **Run the Agent**: Start the `aw-sync-agent`, and it will automatically utilize the configured plugins for data processing.

### πŸ“¦ [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.

- **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.