emcrisostomo/fswatch

A cross-platform file change monitor with multiple backends: Apple macOS File System Events, *BSD kqueue, Solaris/Illumos File Events Notification, Linux...

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 10 minutes ago
Added to GitGenius on September 12th, 2026
Created on June 25th, 2009
Open Issues & Pull Requests: 45 (+0)
GitHub issues: Enabled
Number of forks: 347
Total Stargazers: 5,593 (+0)
Total Subscribers: 95 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 43.1 days
Mean response time: 368.5 days
90th percentile: 959.3 days
Tracked items: 90

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 86% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "enhancement" is answered fastest, typically in about 15 hours, while "area:cli" waits about 2 months. Only 5% of issues opened in the past year have been closed. Three people close 100% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 44
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 2,550 days
Stale 30+ days: 44
Stale 90+ days: 44

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • area:cli (15)
  • area:backend (12)
  • enhancement (11)
  • area:libfswatch (8)
  • area:packaging (8)
  • area:build (7)
  • area:linux (7)
  • area:filtering (5)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

fswatch is a cross-platform file change monitor that detects modifications to files and directories through native operating system APIs.

fswatch solves the problem of detecting file system changes in a portable way by implementing multiple backend monitors tailored to each platform's capabilities. On macOS it uses the File System Events API, on BSD systems it uses kqueue, on Solaris it uses File Events Notification, on Linux it supports both inotify and fanotify, on Windows it uses ReadDirectoryChangesW, and on any other system it falls back to periodic stat-based polling. This multi-backend approach allows the tool to leverage each platform's most efficient notification mechanism while maintaining a consistent interface across systems.

Developers should choose fswatch when they need reliable file monitoring across multiple operating systems without writing platform-specific code. It suits projects that require recursive directory monitoring, filtering based on regular expressions, and customizable output formats. The tool includes both a command-line interface and libfswatch, a library with C, C++, and Go bindings for programmatic use. The kqueue monitor has a notable limitation: it requires an open file descriptor per watched file, which causes poor scaling and potential failures when the process runs out of descriptors. The FSEvents and File Events Notification monitors have no known limitations and scale well.

The project maintains active engagement with issue reporting and contributions. Development activity shows consistent attention to cross-platform compatibility across diverse Unix-like systems and Windows. The codebase demonstrates careful handling of platform-specific APIs and their respective constraints.