{"id":25409618,"url":"https://github.com/rbas/fluxa","last_synced_at":"2026-03-15T06:38:07.593Z","repository":{"id":275360430,"uuid":"925735332","full_name":"rbas/fluxa","owner":"rbas","description":"Fluxa is a lightweight, efficient monitoring service designed to track the uptime of URLs with minimal memory usage and support for notifications.","archived":false,"fork":false,"pushed_at":"2025-09-20T14:18:18.000Z","size":438,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-20T16:24:25.308Z","etag":null,"topics":["fluxa","monitoring","monitoring-tool","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rbas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-01T16:12:33.000Z","updated_at":"2025-09-20T14:17:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"355079ae-7181-4e1b-87e6-dff9cb7196e5","html_url":"https://github.com/rbas/fluxa","commit_stats":null,"previous_names":["rbas/fluxa"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/rbas/fluxa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbas%2Ffluxa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbas%2Ffluxa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbas%2Ffluxa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbas%2Ffluxa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbas","download_url":"https://codeload.github.com/rbas/fluxa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbas%2Ffluxa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30536410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-15T05:01:24.307Z","status":"ssl_error","status_checked_at":"2026-03-15T04:58:50.392Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fluxa","monitoring","monitoring-tool","rust","rust-lang"],"created_at":"2025-02-16T09:21:13.441Z","updated_at":"2026-03-15T06:38:07.567Z","avatar_url":"https://github.com/rbas.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fluxa\n\nFluxa helps you ensure your services remain online by periodically\nchecking their availability and sending alerts if they go down.\nAdditionally, once a service recovers, you will receive a recovery notification.\nWith its low memory usage and efficient operation,\nFluxa is an ideal solution for monitoring primary services such\nas Uptime Kuma and others.\n\nBy configuring the services, retries, and notifications through\nthe configuration file, you can easily manage the monitoring of multiple services.\nAdditionally, the built-in web server functionality allows you to perform\ncross-monitoring and ensure Fluxa itself remains up and running.\n\n![fluxa \u003e](https://raw.githubusercontent.com/rbas/fluxa/main/assets/fluxa.webp)\n\n## 🚀 Fluxa Features\n\n* **Lightweight and Efficient:** Fluxa has very low RAM usage (in units of MB),\nmaking it ideal for low-resource environments.\n* **Reliable Monitoring:** Built to monitor primary monitoring\nservices like Uptime Kuma, but flexible enough to monitor any service by URL.\n* **Minimal Footprint:** Fluxa is a small, reliable service designed to\nrun efficiently without consuming excessive resources.\n\n## 🛠 Usage\n\nOnce **Fluxa** is installed and the configuration file is ready, you can run it\nby executing the binary with the `--config` parameter, followed by the path\nto your configuration file.\n\nFor example:\n\n```shell\n./fluxa --config /path/to/your/config.toml\n```\n\nThis will start **Fluxa**, and it will begin monitoring the services defined in your\nconfiguration file. Additionally, Fluxa's internal web server will be running\nat the configured listen address (e.g., `127.0.0.1:8080`)\nto allow cross-monitoring of *Fluxa* itself.\n\n## 📦 Installation\n\nYou can install Fluxa in two ways: by downloading a pre-compiled binary\nor by building it from source. Below are the instructions for both methods.\n\n### 1. Download Pre-compiled Binaries\n\nIf you don't want to build the project from source, you can download\nthe latest release for your platform.\n\n1. Visit the [latest releases page](https://github.com/rbas/fluxa/releases/latest) on GitHub.\n2. Choose the appropriate binary for your platform:\n\n    * For **macOS (arm64)**: `fluxa-aarch64-apple-darwin.tar.xz`\n    * For **Linux (x86_64)**: `fluxa-x86_64-unknown-linux-gnu.tar.xz`\n\n3. Download and Extract\n\n    * Download the `.tar.xz` file for your platform.\n    * Extract the contents of the archive\n\n4. Run the Project: After extracting, navigate to the directory containing the binary and run the executable\n\n```shell\n./fluxa --config /path/to/config.toml\n```\n\n### 2. Install from Source (Using cargo build)\n\n1. **Prerequisites**: Make sure you have [Rust installed](https://www.rust-lang.org/tools/install) on your machine.\n2. **Clone the Repository**: Clone the repository to your local machine\n3. **Build the Project**: Build the project using Cargo\n\n```shell\ncargo build --release\n```\n\n\u003e *This will compile the project and generate an executable in the `target/release/` directory.*\n\n4. **Run the Project**: After building, you can run the project:\n\n```shell\n./target/release/fluxa --config /path/to/config.toml\n```\n\n## ⚙️ Configuration\n\nThe configuration file is structured as follows:\n\n1. **Pushover API Keys** (for notifications)\n2. **Fluxa Settings** (to configure the service itself)\n3. **Services** (list of monitored services and their specific settings)\n\n### Pushover API Keys\n\nFluxa can send notifications through Pushover when a monitored service is down\nor recovered. You need to provide the Pushover API key and user/group key\nfor sending notifications.\n\n```toml\n# Pushover API key\npushover_api_key = \"api key\"\n\n# Pushover user or group key\npushover_user_key = \"key\"\n```\n\n* `pushover_api_key`: This is the API key provided by Pushover to authenticate the service.\n* `pushover_user_key`: This key identifies the user or group that should receive the notifications.\n\n### Fluxa Settings\n\nFluxa runs as a service that listens for incoming requests.\nBelow is the configuration for how Fluxa will behave when running.\n\n```toml\n[fluxa]\n# Listen on\nlisten = \"127.0.0.1:8080\"\n```\n\n* `listen`: The address and port on which Fluxa will listen. In this example,\nFluxa listens on `127.0.0.1:8080`, meaning it will only accept local connections.\nAdjust the address and port as needed.\n\n#### Fluxa Health Check Endpoint\n\nFluxa provides an endpoint for cross-monitoring, which can be used to monitor the status of the Fluxa service itself. This endpoint responds with an HTTP status of `200`` and a body of`ok`. You can use this endpoint to monitor Fluxa using another monitoring system.\n\n    Health Check URL: http://\u003cfluxa_host\u003e:\u003cfluxa_port\u003e/\n    Response:\n        HTTP Status: 200 OK\n        Body: ok\n\nYou can use this endpoint to confirm that Fluxa is running and responsive.\n\n### Service Configuration\n\nThe services section defines a list of URLs that Fluxa will monitor.\nEach service can be configured with its monitoring interval,\nretry mechanism, and maximum retry attempts.\n\n#### Service Configuration Example\n\n``` toml\n[[services]]\n# Monitored url\nurl = \"http://localhost:3000\"\n\n# How often the url will be monitored (in seconds)\ninterval_seconds = 300\n\n# Maximum number of retries before the service is considered down\nmax_retries = 3\n\n# Retry interval (in seconds) before the next attempt\nretry_interval = 3\n```\n\n#### Fields Description\n\n* `url`: The URL of the service that Fluxa will monitor. Replace \"\u003chttp://localhost:3000\u003e\" with the actual URL you want to monitor.\n* `interval_seconds`: The frequency (in seconds) at which the URL will be checked. In the example, it is set to 300 seconds (or 5 minutes).\n* `max_retries`: The number of retry attempts to make if the URL check fails. If the service fails max_retries times consecutively, it will be marked as down. In this example, it is set to 3 retries.\n* `retry_interval`: The time (in seconds) Fluxa waits before retrying the check. For example, if this is set to 3, Fluxa will retry the check every 3 seconds.\n\n#### Service Status Notifications\n\nFluxa sends notifications when a monitored service is down and when it recovers.\n\n* **Service Down**: When Fluxa detects that a service has failed (i.e., after the service reaches the maximum retry attempts and still cannot be reached), it will send a single notification about the service being down.\n\n* **Service Recovered**: Once the service is back online and successfully responds to the monitoring checks, Fluxa will send a notification indicating that the service has recovered.\n\nThese notifications are sent via the Pushover API, ensuring that the designated user or group receives an alert both when the service goes down and when it comes back online.\n\n#### Notes\n\n* **Multiple service blocks**: Each service can be defined separately using the `[[services]]` format. Fluxa can monitor an arbitrary number of services by adding multiple blocks in the configuration file.\n* **Custom intervals**: You can configure different intervals and retry behaviors for each service according to its needs.\n* **Single Notification**: For each service, only one notification is sent for each state change (down or recovered). Duplicate notifications are not sent for the same status.\n\n## 🌈 Motivation\n\nMy motivation for creating Fluxa stemmed from the need for a lightweight, meta-monitoring tool designed to check whether other monitoring tools are up and running. With a focus on minimal memory footprint—just a few MB—Fluxa is built to be simple yet effective, capable of running even on resource-constrained devices like routers. The goal was to create a solution that could cross-monitor both main and advanced monitoring tools, ensuring seamless oversight without adding unnecessary complexity or overhead. Additionally, I integrated support for Pushover notifications to ensure timely alerts when services go down, making Fluxa not only a reliable monitoring tool but also a practical way to maintain uptime across critical systems.\n\n## ⭐ Contribute\n\nYou are welcomed to fork the project and create a branch for each new feature\nyou wish to add. Ensure that you write necessary tests and run the current\ntests before making your pull request.\n\n## License: MIT\n\n© 2025 Martin Voldrich\nThis work is licensed under [MIT license](https://github.com/rbas/fluxa/blob/main/LeCENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbas%2Ffluxa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbas%2Ffluxa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbas%2Ffluxa/lists"}