A search engine that learns what you actually touch
fff keeps an in-memory index and frecency scores so repeated searches in long-running processes—Neovim, AI agents, IDEs—feel instant instead of spawning ripgrep again.

What it does fff is a Rust file-search toolkit with three faces: a Neovim plugin, an MCP server for AI agents, and a Pi editor extension. It maintains a lightweight in-memory content index and a background file watcher, so once warmed up it answers path and grep queries from RAM rather than disk. The frecency scorer ranks files by how recently and frequently you opened them, warmed automatically from git touch history.
The interesting bit
The project started as a Neovim plugin people liked, then pivoted into a library because AI harnesses and editors kept reinventing the same need: accurate, fast search without shelling out to CLI tools on every request. The MCP server exposes ffgrep, fffind, and fff-multi-grep tools so Claude Code, Cursor, and friends can search with fewer roundtrips and less wasted context. Definition-first hinting classifies code-definition lines in Rust, not with regex in your prompt.
Key highlights
- Typo-resistant matching with smart-case and auto-fuzzy fallback:
IsOffTheRecordfinds snake_case variants; zero-match queries retry fuzzy. - Git-aware annotations tag modified, untracked, and staged files so agents reach for what you are actively changing.
- Programmatic Lua API for Neovim with paginated, scored results and optional blocking re-index when you switch working directories.
- Weak-match detector flags scattered fuzzy noise before it floods an agent’s context window.
- Rejects wildcard-only patterns like
.*up front to save everyone time.
Caveats
- The README claims it is “way faster than CLIs like ripgrep and fzf in any long-running process that searches more than once,” but the benchmark chart shown is unlabeled—no numbers, axes, or methodology are visible in the provided source.
- The Neovim plugin demo is a video link; performance on the 100k-file Linux kernel repo is asserted but not independently verifiable here.
Verdict Worth a look if you live in Neovim or wire AI agents into codebases and want search that remembers your habits. If you just need one-off shell greps, ripgrep is still fine.
Frequently asked
- What is dmtrKovalenko/fff?
- fff keeps an in-memory index and frecency scores so repeated searches in long-running processes—Neovim, AI agents, IDEs—feel instant instead of spawning ripgrep again.
- Is fff open source?
- Yes — dmtrKovalenko/fff is open source, released under the MIT license.
- What language is fff written in?
- dmtrKovalenko/fff is primarily written in Rust.
- How popular is fff?
- dmtrKovalenko/fff has 9.8k stars on GitHub and is currently accelerating.
- Where can I find fff?
- dmtrKovalenko/fff is on GitHub at https://github.com/dmtrKovalenko/fff.