FAQ
What does the name mean?
The binary is rf — ripgrep + fd, the two tools whose engines it
combines. The project and site are rgfind: rg (the ripgrep command) plus
find (the job fd does).
Does rf replace ripgrep or fd?
No. rf links their engine crates and wraps them. Use plain rg/fd for
interactive searching you trust your eyes on. Reach for rf when a program will
act on the result and “exit 0” from a naive search is not enough to prove the
tree was fully searched. See Comparison.
Why not just always pass rg -uu -a?
That surfaces more files, but it still exits 1 on no match, still cannot tell
you which filter would have hidden each result, and — with -uu -a — descends
into .git/ and produces false positives from commit messages. rf recovers
the matches, attributes each one, keeps .git internals out, and reports an
empty result as exit 0.
Do I need git and ast-grep installed?
No. content and the fd/binary stages of find need only the rf binary. The
git_deleted and ast_structural stages use git and ast-grep
respectively; when a tool is absent, its stage contributes nothing and rf
warns rather than failing. See Install.
Is the output stable enough to snapshot in a test?
Yes. rf honors SOURCE_DATE_EPOCH and content-addresses request_id and
data_hash, so the envelope is byte-identical across runs with fixed inputs.
See the JSON contract.
Is it ready for production?
It is in early development (0.0.x). The command surface and JSON envelope
work today, but expect breaking changes before 1.0 — branch on
meta.contract_version and pin a crate version in anything that must not move.
What language is it written in?
Rust. It builds to a single static binary with sub-millisecond warm startup, and links ripgrep’s and fd’s own crates in-process. See How it works.
What is the license?
Apache-2.0. See the LICENSE in the source repository.