← all repositories
dmtrKovalenko/fff

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.

9.8k stars Rust Coding Assistants
fff
Velocity · 7d
+19
★ / day
Trend
accelerating
star history

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: IsOffTheRecord finds 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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.