I built a tool called SIFS because coding agents waste too much context before they understand a repo, in my experience.
They grep around the codebase, read whole files or large chunks, guess a lot, and only then start to find the code that they need. SIFS gives them a better first move: fast local search over ranked code chunks.
It runs as a Rust CLI, Rust crate, and local MCP server. The default mode is hybrid search: BM25 plus semantic retrieval, fused and reranked. BM25 is fully offline and model-free. Semantic and hybrid search run locally once the model is cached. No GPU, no API keys, no external service.
Examples:
sifs search "where is authentication handled" --source /path/to/project
sifs search "parse JWT claims" --source /path/to/project --mode bm25 --offline
sifs find-related src/auth/session.rs 42 --source /path/to/project
sifs mcp install --client all
Use rg when you know the exact string. Use SIFS when you do not yet know what to search for: "where is auth handled", "how does upload backpressure work", "where are JWT claims parsed", "what code owns this behaviour".
Current benchmark:
63 pinned open-source repos
19 languages
1,251 annotated search tasks
NDCG@10: 0.8641
cold index: 6.5 ms
warm query: 0.376 ms
That puts SIFS ahead of CodeRankEmbed Hybrid, Semble, ColGREP, grepai, probe, and ripgrep on this benchmark. It is strongest on symbol queries, but the hybrid mode is designed for the natural-language questions humans and agents ask while exploring unfamiliar code.
Very open to feedback and issues/PRs! Let me know if you try it.
MIT license.

