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.