About this project
fff is a file search toolkit and SDK designed for both human users and AI agents. It provides typo-resistant path and content search, frequency-ranked (frecency) file access, a background watcher, and a lightweight in-memory content index. The project states it is faster than CLI tools like ripgrep and fzf in long-running processes that search more than once.
The toolkit is available in several integration forms:
- **MCP server**: Works with Claude Code, Codex, OpenCode, Cursor, Cline, and any MCP-capable client. Exposes `ffgrep`, `fffind`, and `fff-multi-grep` tools. Installable via one-line scripts (Linux/macOS/Windows) or Homebrew.
- **Neovim plugin (fff.nvim)**: Originally the project's primary form. Provides `find_files`, `live_grep`, `live_grep_under_cursor`, and programmatic `file_search`/`content_search` APIs. Supports lazy.nvim and vim.pack installation, with prebuilt binary download or cargo build fallback.
- **Pi agent extension**: Swaps pi's native grep/find tools for FFF implementations, with three runtime modes (tools-and-ui, tools-only, override).
Key features include frecency memory that ranks frequently opened files higher (warm-up from git touch history), definition-first hinting that classifies code-definition lines on the Rust side, smart-case search with automatic fuzzy fallback on zero matches, and git-aware annotations that tag modified, untracked, and staged files.
The Neovim plugin supports constraint syntax in queries (e.g., `git:modified`, `*.rs`, `!test/`, glob patterns), multi-select with quickfix list integration, configurable layout with preview pane, live grep modes (plain, regex, fuzzy), and a file info debug panel showing metadata and score breakdowns. Both `file_search` and `content_search` return structured results with pagination support.
The project is MIT licensed and is used by opencode, nushell, and other projects. It is written in Rust with bindings for multiple languages.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.