Use this when a change in one repository can break another, or when your agent keeps asking where a shared type is defined.
How it works
1
Build each repository
Run
graphify extract . (or your usual build) in each repository so each has its own graphify-out/graph.json.2
Combine
Nodes are tagged with their repository. Unresolved calls saved during each build are matched against definitions in the other repositories, so cross-repo member calls become real edges.
3
Re-cluster
The combined graph is clustered as a whole, so communities can span repositories.
See it in action
- merge-graphs
- global
graphify-out/merged-graph.json. Pass --previous <path> to keep the community IDs from an earlier merge.graphify clone <github-url> clones it locally and prints its path.
Manage the global graph
Point your agent at it
The MCP server reads any graph file, so you can serve a merged graph:Verify and troubleshoot
Does merging change each repository's graph?
Does merging change each repository's graph?
No. Inputs are read, not modified.
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.merge-graphs:
--previous <path> to keep the earlier merged community IDs. Then a later cluster-only run can reuse the labels.
Add a repository while you extract
extract can write a project graph and merge it into the global graph in one step:
--as sets the tag. Without it, the tag is the target directory’s name. Use the same tag later to update or remove that repository:
FAQ
Where is the global graph? Rungraphify global path to print it. By default it’s ~/.graphify/global-graph.json.
What’s next
PR impact
Check what a change touches.
Deduplication and resolution
How calls are resolved.
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.