Real time file system monitoring tool for Windows, written in Python. Offering deep visibility into file changes, making it ideal for debugging, auditing, and monitoring activity across directories.
- Supports concurrent monitoring of multiple directories in real time.
- Tracks
creation,modificationanddeletionfile events. - Path exclusion filters allow suppression of noisy directories either temp or system files.
- Resolves the user responsible for each file system event detected.
- Designed for accuracy and low latency reporting, even under high event load.
- You can scan existing files and compute their content hashes.
- Duplicate detection is based on file content, not filename or metadata.
- Combines a memory mapped circular buffer with a fast in memory index.
- Backed by a fixed size memory mapped slab file for persistence.
- Cache keys are generated using
xxh3_64algorithm. - On startup, the index is rebuilt directly from
pyile.cache.slabrecords.
Backup monitoring is not fully integrated yet.
- Trigger file backups at regular intervals (e.g., every 24 hours).
- Automatic backups trigger by system file event changes.
- Saved as a compressed
.tar.gzarchive for storing. - Supports manual backup triggers through the interface.
- Windows 10 or 11
- Python 3.10+
git clone https://github.com/0x7f9/pyile.git
cd into_cloned_folder
# will automatically bootstrap dependencies
# make sure to run `run.py` from the repo root folder
python run.py The notification sound currently plays when the legacy notification manager (system tray balloon list) processes the notification, which may not align precisely with the actual toast/banner card appearing visually on screen. To help a fixed 4 second delay is enforced after playing the sound before the next notification sound can trigger. This behavior comes from the legacy Shell_NotifyIcon balloon API.
Currently the username of the detected file change is grabbed using the path_filename of the detected event using GetSecurityDescriptorOwner(). This is an issue as it's not actually displaying who deleted the file rather who owned the file. Also for deleted files its falling back to the current user as the file is not on disk. ETW will fix this issue.
When rapidly starting and stopping the monitoring through the GUI, there may be unexpected crashes of the GUI.
All core dependencies are listed in pyile/bootstrap/installs.txt:
customtkinter– Modern GUI frameworkdarkdetect– Theme detectionpywin32– Windows API accesspystray– System tray integrationpillow– Image processing used for tray iconxxhash– Hashing for content based keys