Graphify is a real, fast-growing open-source project — 106,000+ GitHub stars in 4.5 months — that does the same core thing GitCortex does: turn a codebase into a graph an AI agent can query instead of grepping. We ran both against the same repos and questions to see, honestly, where each one is actually stronger.
On the same 15 code-navigation questions, GitCortex answered more accurately and used about a third fewer tokens doing it. Graphify pulled ahead on questions its own broader feature set is built for — more languages, and reading docs/config alongside code.
Neither result is the whole story. Read on for the numbers, or skip straight to what Graphify does better.
15 questions — deep blast-radius, cross-file architecture, refactor-safety — across five real repos (ripgrep, requests, hono, cobra, gson), same AI client (Claude Code) for both tools.
Called its MCP tool exactly once, on all 15 of 15 tasks. Never needed a fallback search.
Needed 2–5 CLI calls per task (avg 2.7) to land an answer, and fell back to raw file search on 6 of 15 tasks.
Graphify's underlying extraction is competent — on tasks where it resolved the right symbol, its answers were as good as GitCortex's. Two specific, repeatable patterns explain most of the difference:
Claude Code called GitCortex's MCP tool exactly once on every task — one structured call, one sufficient answer. Against Graphify's CLI, the same model needed 2 to 5 attempts on every task, and on 6 of 15 also fell back to raw file exploration. This wasn't a one-off — it happened consistently across the whole suite, and it's the direct driver of Graphify's higher token cost.
Asked about Searcher::line_number() in ripgrep (a config getter), Graphify's
affected command silently traced Sunk::line_number() instead — an
unrelated method that happens to share a short name and gets called 76 times elsewhere in
the codebase. The answer was confident, well-formatted, and about the wrong symbol entirely.
This is the same bug class we found and fixed in our own symbol_context tool
while preparing this release (see the CHANGELOG).
Short-name ambiguity is an easy trap for any code-graph tool — worth checking for regardless
of which one you use.
We went and tested this rather than just describing it — here's what we found.
Language coverage. Graphify supports roughly 40 languages via tree-sitter; GitCortex supports 5 today (Rust, Python, TypeScript, Go, Java). We tested this directly rather than taking it on faith: pointed Graphify's code-only extractor at Thor, a real Ruby project GitCortex can't index at all. It worked cleanly — 743 nodes, 1,027 edges, no LLM call, and correctly flagged an ambiguous symbol (Thor matching 34 nodes) instead of silently guessing, which is exactly the right behavior.
Node: Thor::CoreExt Source: lib/thor/core_ext/hash_with_indifferent_access.rb L2 Connections (2): --> Thor::CoreExt::HashWithIndifferentAccess [contains] <-- Thor [contains]
Docs, SQL schemas, and config files in the same graph. Graphify's semantic extraction mode (LLM-backed, not code-only) reads Markdown docs, Postgres schemas, and Terraform/HCL into the same graph as your code — a real, useful capability GitCortex doesn't attempt. We don't have an LLM backend configured in the environment this comparison ran in, so we're not claiming a tested result here — only reporting Graphify's documented capability honestly instead of guessing at numbers we don't have.
Community and maturity. Graphify has 106,000+ GitHub stars and 10,000+ forks after 4.5 months. GitCortex is a much smaller, newer project. That's not a benchmark result, but it's real context worth knowing.
| Task | Type | GitCortex | Graphify | GitCortex tok | Graphify tok |
|---|---|---|---|---|---|
| ripgrep · line_number | impact | 1.00 | 0.00 | 199,241 | 239,080 |
| ripgrep · Searcher | architecture | 1.00 | 0.50 | 214,867 | 359,885 |
| ripgrep · Searcher | refactor | 1.00 | 1.00 | 210,484 | 227,441 |
| requests · send | impact | 1.00 | 0.50 | 167,854 | 269,580 |
| requests · Session | architecture | 1.00 | 0.50 | 207,319 | 234,288 |
| requests · Session | refactor | 1.00 | 0.00 | 214,247 | 234,152 |
| hono · compose | impact | 1.00 | 1.00 | 200,846 | 236,467 |
| hono · dispatch | architecture | 1.00 | 0.50 | 203,584 | 310,641 |
| hono · compose | refactor | 1.00 | 1.00 | 97,482 | 235,111 |
| cobra · AddCommand | impact | 1.00 | 0.50 | 200,502 | 151,961 |
| cobra · ParseFlags | architecture | 0.50 | 0.50 | 201,050 | 231,373 |
| cobra · AddCommand | refactor | 1.00 | 1.00 | 168,240 | 231,975 |
| gson · beginArray | impact | 0.00 | 0.00 | 199,231 | 111,611 |
| gson · peek | architecture | 0.50 | 0.50 | 130,689 | 313,729 |
| gson · beginArray | refactor | 0.00 | 0.00 | 166,816 | 273,867 |
The 3 tasks where both tools scored low (gson × 2, cobra-architecture) are citation-format misses, not missing evidence — both agents found the right symbol but cited a class/method name instead of the full repo-relative path our automated grader string-matches on. Verified by manual inspection of every non-1.0 result on both sides before publishing this page.
mcp__gcx); Graphify accessed via its CLI (graphify affected / graphify explain, code-only mode, --code-only) since it has no MCP integration wired into this harness yet.--dangerously-skip-permissions in this sandboxed, repos-only context to get deterministic tool access for both arms.graphify_compare.py.