
MonitorHub is a lightweight, cross-platform (Windows and Linux) file and folder monitor that reacts to file and timer events and automatically propagates files to a target destination — a cloud storage provider, an FTP server, a local drive or a shared folder — and can run commands and scripts in response to events. You can configure it in minutes with the simple mhub command-line interface.
Monitors consume events and profiles trigger handlers
At its heart MonitorHub is like a lego box.
created, modified, deleted, moved, closed or timer — it hands it to an event dispatcher. The dispatcher queues each event and detaches it to the handlers of all attached profiles. Each handler runs on its own worker thread, so a slow upload or a long-running command never blocks other events.Monitors are independent processes: each monitor can be started and stopped individually, runs with its own logging, and can be attached to any number of profiles.
The architecture is deliberately pluggable. Adding a new capability means adding one brick, not rewiring the box:
register() call. All the plumbing (event loop, dispatcher, profile handling, logging, process lifecycle) is already in place. For example, a webhook monitor is just one new WebhookMonitor class registered with an action handler.Profiles, monitors and their mappings are stored in a local SQLite database, managed through simple commands: mhub profile new, mhub monitor new, mhub monitor start.
There are no limits to the scalability of MonitorHub on your LAN and on Cloud Servers.
For example, one MonitorHub instance (MH1) is running on a server without internet access. Another MonitorHub instance (MH2) is running on a server with internet access.
Whenever there is a file change on MH1 an instant monitor triggers an FTP file transfer to server MH2. Instance MH2 has an instant monitor running that immediately propagates that file to a cloud storage provider.
In this use case MH2 checks regularly a file with a time stam. If the timestamp is more that say 2 minutes old than we send an alarm to the administration.
Implementation details:
A remote profile stores the configuration of a remote storage provider.
rclone.conf editing needed — and passes credentials to rclone through a per-process environment, so secrets never appear on the command line.mhub profile import reads an existing rclone.conf and lets you choose which profiles to bring over.remote_handler), so the same S3 profile can use the fast built-in handler or hand transfers over to rclone when you want rclone's advanced tuning.A command profile runs a shell command or script in response to events on any monitor — a powerful building block for automation.
Typical uses: send an alert (email, SMS, webhook, chat notification), lock down a firewall port in response to an intrusion, or launch an external program or pipeline.
The command template supports placeholders that are replaced with event details before execution: the monitor name, the profile name, the event type (created, deleted, modified, moved, closed, timer) and the source path.
Safety is built in:
Command profiles can also fire on timer events of scheduled monitors, so they can drive backup and restore workflows too.
The family is on holiday and each phone uploads photos to a different cloud account. Set up one restore monitor with a profile for each cloud provider — when everyone gets home, all photos and videos are already on your media server, ready to watch on the TV.
Monitor critical folders and honeypot files. On a change, a command profile can trigger an alarm by email, SMS or Discord — and fire a job that instantly blocks firewall access to the server.
Use an instant monitor to backup up important files to a versioned cloud provider. If ransomware strikes, restore any previous file version in minutes.
Regardless of versioned cloud provider you should have a 3 generations of backups. For example daily, weekly and monthly backups to 3 different destination folders. Backup monitors are ideal for creating a daily, weekly and monthly backup.
For more information see: README on GitHub
© copyright 2026. All Rights Reserved