Two tools, two query modes

grep (and its modern descendant ripgrep) is the right tool when the query is exact. StrataFS is the right tool when the query is conceptual. They cover different failure modes; the productive developer uses both.

DimensionStrataFSgrep / ripgrep
Indexing requiredYes (one-time per source)No
Query modelHybrid BM25 + vector + metadataLiteral string / regex
Natural-language queriesYesNo
Reads PDF / DOCX / spreadsheetsYes (35+ file types)No (binary noise)
Cross-source queriesYes (Local + cloud + Jira)No
RankingYes (BM25 + cosine + metadata)No (returns matches as-is)
Streaming over huge dirsNo (must be indexed)Yes (extremely fast)
Editor-tooling lineageNewDecades

What grep is unbeatable at

If your query is one of these, use grep:

  • A function name, class name, or other exact identifier.
  • An error string or log message you know verbatim.
  • A configuration key whose name you remember.
  • Anything that’s going to be piped to xargs, sed, or another shell tool.

grep is fast, predictable, and exhaustive. If there’s a match, grep will find it. There’s no warm-up, no index to maintain, no embedding to recompute when a file changes.

What grep gets wrong

If your query is one of these, grep will frustrate you:

  • “where do we handle JWT refresh” — the file might not contain the word “JWT” or “refresh”.
  • “what’s the entry point for auth” — too vague to be a literal.
  • “how does rate limiting work in this codebase” — multiple concepts, multiple files.
  • “find me docs about incident response” — and the docs are PDFs.

These are the queries StrataFS is built for. The hybrid retrieval model — BM25 for the tokens you typed, vector similarity for the intent, metadata for tie-breaks — gives you a ranked answer where grep gives you nothing.

The “I’m new to this codebase” workflow

Open a fresh repo. Three commands:

# What's the shape of the auth system?
stratafs search "authentication entry point" --mode hybrid

# Where's the rate-limit configuration?
stratafs search "rate limit configuration" --path "**/*.yaml"

# What was touched in the last week?
stratafs search "circuit breaker" --since 7d

The third command is the one grep can’t do. Recency-aware ranking is new; it doesn’t fit the grep model.

When to switch (mid-task)

A common pattern: start with StrataFS for the conceptual question, then switch to grep once you have a literal to chase.

Me: stratafs search "where do we mint access tokens"

StrataFS: Top result is internal/session/jwt.go:42 — MintAccessToken(ctx, user). Score 0.86.

Me: rg -F "MintAccessToken" --type go

grep: 14 occurrences across 9 files. Time to refactor.

The first query is the one that takes a human minute to formulate as grep (“uh, maybe Token|JWT|Mint|Access…” — bad results, more guessing). StrataFS handles it in one shot. Then grep does what grep is best at: exhaustive enumeration of an identified literal.

Indexing the things grep can’t read

grep on a PDF is not productive. grep on a .docx is worse. grep on a spreadsheet returns nothing useful. These are zipped XML formats; the text isn’t where grep looks for it.

StrataFS ships 35+ parsers — PDF, DOCX, PPTX, XLSX, CSV, HTML, XML, JSON, YAML, TOML, INI, plus generic text. Indexing your engineering Drive folder makes its contents searchable in the same way as your code, with the same ranking model. grep can’t do this without a parser pipeline you’d have to assemble.

Don’t choose. Use both.

The honest take: StrataFS doesn’t replace grep, and grep can’t replace StrataFS. Most days you’ll use both. A grep alias in your shell, a stratafs search alias next to it, two different reaches depending on the query shape. The productivity gain is from having the right tool for both shapes.

For more on the conceptual-search use case, see our semantic search for codebases article.