OS-native file watching
FSEvents on macOS, inotify on Linux, ReadDirectoryChangesW on Windows. Sub-millisecond change detection with kernel-level events — no polling, no battery drain.
Open source · MIT · v0.1.2
gity is a tiny Rust daemon that brings sub-millisecond git status
to monorepos with millions of files — using OS-native file watchers,
Git's fsmonitor v2 protocol,
and a warm cache that survives reboots.
cargo install gity · brew install neul-labs/tap/gity · npm i -g gity-cli
git statusShips everywhere your team already installs things.
Every release is published with OIDC-based trusted publishing and signed with SLSA-style attestations.
How it works
FSEvents on macOS, inotify on Linux, ReadDirectoryChangesW on Windows. Sub-millisecond change detection with kernel-level events — no polling, no battery drain.
gity speaks Git's own fsmonitor wire protocol, so `git status` only scans the files that actually changed. Works with stock Git 2.37+ — no fork, no patch.
Status results live in a memory-mapped sled database that survives reboots. Repeated polls — from your shell, your IDE, your CI hook — return in microseconds.
While you're at lunch, gity runs prefetch, repack, and GC on a scheduler that respects CPU and battery. Your repo stays fast without you scheduling a single cron job.
Watch them race
Run gity demo on your own machine to see the race below.
Below is what it looks like on a representative 250k-file monorepo.
$ git status # vanilla
$ git status # with gity registered
One command to install. One to register.
gity ships everywhere your team already installs things. The same single binary, regardless of how you get it.
cargo install gityRequires a Rust toolchain. Add --features tray for the system tray UI.
$ gity register ~/work/monorepo
$ cd ~/work/monorepo
$ git status # now returns in milliseconds How gity compares
| Capability | gity | Native fsmonitor | Watchman | Scalar / VFS for Git |
|---|---|---|---|---|
| Single portable binary | ✓ | needs Watchman or Perl helper | ✓ | Windows-only / large install |
| Cross-platform (macOS / Linux / Windows) | ✓ | ✓ | ✓ | Windows only (ProjFS) |
| Zero-config registration | 1 command | config + helper | config + helper | multi-step setup |
| Background prefetch + maintenance | ✓ | — | — | Scalar only |
| Warm cache shared across worktrees | ✓ | — | — | — |
| User-space (no kernel module) | ✓ | ✓ | ✓ | kernel VFS (ProjFS) |
| IDE event subscriptions | pub/sub IPC | — | pub/sub | — |
| License | MIT | GPL (Git) | MIT (Meta) | MIT (Microsoft) |
From the blog
Everything we've learned shipping git tooling for million-file monorepos — what scales, what doesn't, and the order to apply each fix.
cornerstoneWhat fsmonitor actually does, how the v2 wire protocol works between Git and a helper, and why it can make `git status` 100× faster without modifying Git itself.
cornerstoneA practical guide to making git status return in milliseconds, not seconds — covering fsmonitor v2, untrackedCache, partial clones, and when each technique actually helps.
FAQ
gity is a small Rust daemon that watches your repo with OS-native file watchers and speaks Git's fsmonitor v2 protocol, so `git status` returns in milliseconds even in monorepos with millions of files.
Git's flags are necessary but insufficient: they speed up status, but they don't watch files in the background, don't cache results across processes, and don't run prefetch or maintenance. gity wraps all of that into one binary with one command.
No. Run `gity register <path>` once. From then on, every `git status`, `git diff`, and IDE call gets accelerated transparently. No alias, no wrapper, no fork of Git.
Yes. The daemon is ~12 MB, idles under 0.1% CPU, and throttles itself when the system is under load. Resource ceilings (memory, file descriptors) are enforced per-repo.
gity does not modify your Git history, does not upload anything to the cloud, and does not require admin privileges. It is a user-space daemon that talks to Git over a documented protocol.
Yes. gity is MIT-licensed, the source is on GitHub, and all distribution channels (crates.io, Homebrew, npm, PyPI, GitHub Releases) are free and use OIDC-based trusted publishing for supply-chain integrity.
Get gity
One command to install, one to register, and your monorepo starts feeling like a tiny one. MIT-licensed and free to use.