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 — change notifications come from the USN change journal. No file watchers, no rescans; updates reach the UI in about a second.
- Multithreaded search — substring scan over an in-memory index. p99 ≤ 50 ms at a million files, 3+ characters.
- 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 targets
The numbers the final milestone must hit.
| Metric | Target |
|---|---|
| First index (real C:) | 250k ≈ 5s / 1M ≈ 60s |
| Search p99 (1M files, 3+ chars) | ≤ 50 ms |
| Change reflection (USN → UI) | ≤ 1 s |
| Snapshot restore → ready | ≤ 2 s |
| RAM (engine only, bytes/file) | ≤ 110 B |
Architecture
Default is an unprivileged UI plus the service. Without the service, it falls back to an elevated in-process engine.
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 in-proc fallback)
Get started
Toolchain pinned via mise, tasks run with just.
mise install # rust + dotnet just setup # toolchain + git hooks just build # engine (cargo, release) just service-install # register the service (elevated, once)
Prebuilt binaries are on the Releases page.