Instant file-name search for Windows, built with a Rust engine and a native WinUI 3 UI.
Status: early development (pre-MVP). Nothing usable yet.
Project page: p4suta.github.io/find-my-files — overview in 日本語 / English
Windows-only, file names only, FOSS.
- Initial index by reading the NTFS $MFT directly (~seconds per volume)
- Real-time updates from the USN change journal — no filesystem watchers, no rescans
- Multithreaded SIMD substring scan over an in-memory index (~100 MB per million files)
- Pre-sorted indices: sorting a million results by name/size/date is instant
- Native WinUI 3: Mica, consistent dark theme, Per-Monitor V2 DPI (no blur on mixed-DPI setups)
Content/property indexing, tags, previews, FTP/HTTP servers, FAT/exFAT/network drives (initially). Indexing file names only is the reason it's fast. Feature creep is a non-goal.
Reading the NTFS Master File Table and USN journal requires elevated volume access.
find-my-files splits that privilege off into a small Windows service
(fmf-engine, LocalSystem with stripped privileges); the UI runs unprivileged and talks to it
over a locked-down named pipe (same-user only — see docs/SECURITY.md for the threat model).
just service-install # register + harden (elevated, once)
just service-start
Without the service installed, the app offers to relaunch elevated and runs the engine
in-process instead (--engine=inproc, the original MVP mode).
By default, hidden/system files — and everything under hidden/system folders
($Recycle.Bin contents, pagefile.sys, .git internals…) — are excluded from
results. A toolbar toggle brings them back instantly (they stay indexed).
Known limitations: names with unpaired surrogates are searchable but displayed with replacement characters.
Toolchain is pinned via mise (mise.toml), tasks run via just:
mise install # rust + dotnet toolchains
just setup # toolchain + git hooks (lefthook)
just build # engine (cargo, release)
just test # engine unit tests
just service-dev # run the engine service in the foreground (elevated)
just index C: # index a volume from the CLI (elevated terminal required)
The WinUI 3 app lives in app/ (from milestone M1 onward).
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 (in-proc fallback, elevated)
See docs/ARCHITECTURE.md for the FFI contract and docs/RESEARCH.md for the verified
technical groundwork (MFT/USN APIs, prior art, performance baselines).
- Design docs — architecture, ADRs, research, and the security model (rendered from
docs/with mdBook) - API reference — Rust crate docs (rustdoc)
Both rebuild on every push to main; build them locally with just doc.
Apache-2.0