find-my-files
A file-name search for Windows. Reads the NTFS $MFT directly
and stays current through the USN journal. A Rust engine with a WinUI 3
UI. Indexes file names only.
Apache-2.0 · Windows 10/11 (NTFS)
How it works
- Initial index from the $MFT — reads the NTFS Master File Table directly; every file name on a volume in seconds.
- Updates via the USN journal — normal changes need neither per-file watchers nor full rescans and reach the UI in about a second. If journal continuity is lost, the index is rebuilt safely.
- Multithreaded search — substring scan over an in-memory index; millisecond results that keep up with typing, even at a million files.
- Native WinUI 3 — Mica, a dark theme, Per-Monitor V2 DPI.
- Memory-lean — indexing file names only means about 100 MB per million files.
- Privilege separation — MFT/USN access is split into a Windows service. The UI runs unprivileged and talks over a same-user-only named pipe.
Out of scope
Indexes file names only. The following are not covered.
- Content search
- Property / tag indexing
- Previews
- FTP / HTTP servers
- FAT / exFAT / network drives
- ReFS
- Cross-platform
Performance
No step where you wait.
- First index — seconds on a typical C: drive; later launches come straight back from a snapshot.
- Search — runs on every keystroke and answers in milliseconds, even at a million files.
- Update latency — a file you just created shows up almost immediately.
The exact targets and their measurement conditions are defined by the repository's regression gates and checked on every release.
Architecture
Default is an unprivileged UI plus the service. Without the service, an unprivileged launch opens setup; only an already-elevated launch falls back in-process.
WinUI 3 app (C#, unprivileged) ──named pipe──▶ fmf-service (Rust, LocalSystem)
└─ IEngineClient boundary └─ fmf-core: $MFT scan, USN tailing,
├─ PipeEngineClient (default) in-memory index, query engine
└─ FfiEngineClient ──P/Invoke──▶ fmf_engine.dll (elevated launch only)
Get started
Windows 10/11 (NTFS). Unzip, run, and approve one UAC prompt the first time to register the service.
Build-from-source instructions live in the README in the GitHub repository.