Answer "what breaks if I change this?" Reverse dependency analysis, cycle detection, and token-budgeted context packs. Rust CLI with built-in MCP server.
https://sephera.vercel.app ↗// readme
Sephera
Know what breaks before you touch it.
You are about to edit a shared module. Which files depend on it?
grep finds text matches, not call paths. Your IDE guesses. An LLM hallucinates a confident wrong answer.
Sephera builds a real dependency graph from your actual import / use / #include statements, then answers that question exactly.
cargo install sephera
The graph is checked against real repositories
A dependency tool that reports confident nonsense is worse than no tool. So the numbers are measured on three real projects at pinned commits, asserted in CI, and reproducible:
python scripts/fetch_corpus.py # clone the three repositories
python scripts/measure_accuracy.py --verify
repository files internal self-refs unresolved cycles cfg-gated
---------- ----- -------- --------- ---------- ------ ---------
axum 307 640 66 8 19 86
flask 80 185 5 0 43 0
express 141 159 0 0 0 0
unresolved counts imports meant for this project that could not be placed to a…