Ultra-fast file search toolkit for AI agents, Neovim, and code editors. MCP server for Claude Code/Cursor/Codex, frecency-ranked search, symbol indexing via tree-sitter, and a Rust core that outperforms ripgrep and fzf in long-running processes.
README
ffs replaces find, fd, grep, rg, glob, and cat with a single
typo-resistant, frecency-ranked binary, and adds tree-sitter powered
code-navigation (symbol, callers, callees, refs, flow, impact)
and a token-budget aware file reader for AI agents.
curl -fsSL "https://raw.githubusercontent.com/quangdang46/fast_file_search/main/install.sh?$(date +%s)" | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/quangdang46/fast_file_search/main/install.ps1 | iex
The scripts detect your platform, fetch the matching binary from
GitHub Releases,
verify the SHA-256 sidecar, and atomically install to ~/.local/bin/ffs
(Unix) or %LOCALAPPDATA%\ffs\bin (Windows).
ffs --help
ffs index # one-time warm-up (~200ms on a 10k-file repo)
ffs find UnifiedScanner
ffs grep '\bTODO\b' --root crates/
ffs symbol FilePicker
ffs callers UnifiedScanner
ffs read crates/ffs-engine/src/lib.rs --budget 5000 --filter minimal
ffs dispatch 'where is the user controller'
ffs map --depth 3
ffs mcp # run as MCP server over stdio
ffs index writes a tree-sitter symbol-index cache to <repo>/.ffs/. Subsequent
ffs symbol/callers/refs/flow/siblings/impact invocations skip the
re-parse and load the cache directly — sub-200 ms on a Linux-kernel-sized repo.
The cache is invalidated automatically on schema bumps, git HEAD changes, or
significant file-count drift. Add .ffs/ to your .gitignore (the
repository's own .gitignore already does this).
ffs find Find files by name (replaces