I covered Graphify a couple weeks ago as a genuinely different approach to code retrieval — parsing a codebase’s actual AST into a graph instead of embedding chunks for similarity search. CodeGraph, trending again this week, is built on the identical core idea, with one specific architectural difference worth actually sitting with.

The shared foundation: tree-sitter parsing across more than 20 languages, producing symbols and edges read directly from the code’s real grammar rather than inferred from text similarity — the same EXTRACTED-style guarantee I described with Graphify, stored this time in a local SQLite database rather than a standalone graph file. Agents query it through an MCP server rather than falling back to grep and glob across the raw filesystem, with the project’s own published benchmarks reporting 92% fewer tool calls and 71% faster exploration averaged across six real-world codebases.

The one difference that actually matters: CodeGraph auto-syncs through native OS file watchers, continuously, the moment a file changes. Graphify’s freshness depends on remembering to install its git hook, or running it manually after a meaningful set of changes — which means a Graphify index can genuinely drift out of date between regenerations if nobody remembers to trigger it. CodeGraph’s bet is that the index should just always already be correct, with no separate step to remember and no window where the graph and the actual code have quietly diverged.

What that tradeoff actually costs, since nothing here is free: a live file watcher is a background process that has to keep running correctly, parsing and re-indexing on every meaningful save rather than once per commit — continuous overhead traded for continuous freshness, versus Graphify’s lower resting cost traded for a freshness window that depends on human discipline. Neither choice is strictly better; it’s the same kind of “guaranteed but more expensive” versus “cheaper but depends on you remembering” tradeoff I described generally comparing a skill to a proxy a few days ago, just applied to index freshness instead of token compression.

Where it genuinely goes further than what I described with Graphify: framework-aware route detection across 13 frameworks specifically, and verified cross-language graph traversal — a query that needs to follow a call from Python into Rust and back actually resolves correctly, rather than stopping at a language boundary the way a purely per-file or per-language index might. Impact analysis is also a first-class, named feature here: trace every caller, every callee, and the full impact radius of a specific symbol before you change a single line, turning “will this break something” from a question you answer by searching into one you answer by querying a structure that already has the answer encoded in it.

The honest read, given two tools now solving the same problem with the same underlying technique: this isn’t really a story about one being better than the other in the abstract. It’s a story about which specific tradeoff matches how you actually work — a codebase that changes constantly throughout the day benefits more from CodeGraph’s always-current watcher; a codebase where changes land in more discrete, commit-sized batches loses little from Graphify’s regenerate-on-commit model and saves the background overhead of a file watcher that would otherwise be reindexing constantly for not much practical gain.