FFF (Fast File Find)
A typo-resistant, frecency-ranked file and content search toolkit for AI agents, Neovim, Rust, C, Python, Bun, and NodeJS. Claims to beat ripgrep and fzf in any long-running process that searches more than once. 9,491 stars at the 2026-07-03 source check. Source: dmtrKovalenko/fff README, GitHub
fff started as a beloved Neovim plugin and generalized into a search library, because AI harnesses and code editors all need the same thing: accurate, fast file search that holds a warm in-memory index instead of re-walking the tree on every query. It ships a background watcher, frecency ranking (files you open rank higher next time, warmed from git touch history), and a lightweight content index. Source: dmtrKovalenko/fff README, GitHub
Surfaces
- MCP server: exposes
ffgrep,fffind, andfff-multi-grepto Claude Code, Codex, OpenCode, Cursor, Cline, and any MCP client. One-line install viacurl ... | bash. The repo's benchmark chart claims fewer grep roundtrips and less wasted context than built-in agent file search. - Pi agent extension (
pi install npm:@ff-labs/pi-fff) with three modes: add tools + UI, tools-only, or override pi's native grep/find/multi_grep. - fff.nvim: the original Neovim plugin, demoed on the Linux kernel repo (100k files, 8GB).
Source: dmtrKovalenko/fff README, GitHub
Why It Matters for Agents
The agent-facing value is token economy, not just speed. Smart-case with auto-fuzzy fallback (IsOffTheRecord finds snake_case variants; zero-match queries retry as fuzzy), definition-first hinting classified on the Rust side, and git-aware annotations mean the agent reaches for what you are actively changing with fewer, higher-signal results. This is the search-layer analog of Lean Ctx: cut wasted context per tool call. It complements rather than replaces Ripgrep, which stays the right tool for one-shot terminal greps; fff wins inside a persistent agent session that searches repeatedly. Drop For any file search or grep in the current git-indexed directory, use fff tools. into CLAUDE.md to route an agent to it.
Install candidate (Rust/MCP/Pi/Neovim). Run the three-gate chain before adopting, per AGENTS.md.
Version Snapshot
Checked 2026-07-03:
| Surface | Current |
|---|---|
| GitHub | dmtrKovalenko/fff, MIT, 9,491 stars, 366 forks |
| Source revision | main HEAD 1cd8d31da4c1536be11c4dae0ed61d066e05e87f |
| Release tag | v0.9.6 tag object 8ab96838fbaf4495ae87e3e6b82344b720695ae0, commit 28321da22836b0e11da81e30f40f7a043b8f8fb4 |
| npm / Pi extension | @ff-labs/pi-fff@0.9.6 latest, nightly at 0.9.7-nightly.1cd8d31, package modified 2026-07-02 |
| Distribution | MCP install script, Homebrew formula, Pi extension, Neovim plugin, and language bindings |
The bookmark itself is source-only: no local image/video artifact was expected. The durable evidence is the resolved GitHub repo, README, and package/release state. Source: GitHub, npm registry, 2026-07-03
Timeline
- 2026-05-22 | Surfaced via @nfonrose (low tweet engagement, 6 likes), but the resolved repo
dmtrKovalenko/fffcarries the signal at ~7K stars with MCP, Pi, and Neovim surfaces. Source: X/@nfonrose, 2026-05-22 - 2026-07-03 | Deep-reviewed the resolved repo and refreshed the source snapshot:
@ff-labs/pi-fff@0.9.6, GitHub tagv0.9.6, default branchHEAD1cd8d31d, 9,491 stars, 366 forks. Kept as a candidate search layer rather than adopting without the required three-gate review. Source: raw/x-bookmarks/enriched/2057815830121816206.json; GitHub/npm registry, 2026-07-03