load_config() in app.py is useful only when it points at the load_config defined in config.py, and a concept your docs call “Auth Service” should be the same node as the one another doc calls “auth service”. Graphify Local does both before it writes the graph, and it labels how sure it is.
Read this page when you want to know whether to trust an edge, why two nodes merged, or why a call you expected isn’t in the graph.
How it works
Symbol resolution
1
Index
Every file’s definitions, imports, and exports are indexed with tree-sitter.
2
Resolve across files
Calls and references are matched to definitions through imports, re-exports, and language-specific passes (receiver types, qualified member calls, framework conventions). New languages plug in through a resolver registry.
3
Tag confidence
Each edge gets a tag, so you and your agent know what was read and what was worked out.
Resolution is conservative. When Graphify can’t tell which of several definitions a call means, it records an
AMBIGUOUS edge or no edge, rather than guessing.
Deduplication
Entity deduplication runs on every build, before the graph is written:1
Exact match
Labels are normalised (case, punctuation, Unicode marks) and identical ones merge.
2
Candidate pairs
MinHash with locality-sensitive hashing finds labels that might be the same, so Graphify never compares every pair.
3
Verify
Each candidate is scored with Jaro-Winkler similarity. Pairs in the same community get a 5-point bonus. A score of 92 or more merges.
4
Guard rails
Short labels only merge on a single-character typo, and labels that differ only in an embedded number (
ADR 0011 and ADR 0012) never merge.5
Rewire
Edges and hyperedges are moved to the surviving node. Genuine ID collisions across files stay separate and are reported.
See it in action
explain shows the tag on every connection:
Configure
Verify and troubleshoot
Does deduplication change code nodes?
Does deduplication change code nodes?
Code symbols mostly have unique IDs from their file and name, so they rarely merge. Deduplication matters most for concepts pulled from docs and papers.
Can my agent rely on INFERRED edges?
Can my agent rely on INFERRED edges?
Yes for navigation. For a change that must be correct, confirm the edge by opening the file and line the node points to.
Run it on a second repository
These examples come from a code-only graph of the open-source httpx repository, built with Graphify Local 0.9.97. Your counts will differ. The dedup step reports what it merged:diagnose multigraph on the same graph found no edges collapsed between the same endpoints:
FAQ
Can I see merges as JSON? Pass--json to diagnose multigraph, and --max-examples N to see more examples.
Same name in two files? Those stay separate nodes. Commands such as explain report the ambiguity and list each ID, with exit code 3.
What’s next
Community detection
How resolved edges become communities.
Supported inputs
Languages and file types.
Try it in Graphify
We build and host the graph for you. Start with a 14-day Pro trial, then keep up to 3 repositories on Free. No card required.