Skip to main content
Parsing one file at a time only gets you halfway. A call to 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

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.
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.