Call Graph
Ganglia parses your source code into a directed call graph. Every function, class, method, HTTP route, and database table becomes a node. Every call, import, or reference becomes an edge.
What gets indexed
Section titled “What gets indexed”- Functions and methods — with their signatures and file locations
- Classes and modules — as container nodes
- HTTP routes — linked to their handler functions
- Database tables — linked to the queries that touch them
- Environment variables — linked to where they’re read
Graph backends
Section titled “Graph backends”| Backend | Storage | When to use |
|---|---|---|
| Cozo (default) | .gl/graph.cozo — one SQLite file | Any project, zero setup |
| FalkorDB | Redis module | When you want the live web dashboard |
Switch backends: gl init . --backend falkor
Lazy reindexing
Section titled “Lazy reindexing”On MCP startup, Ganglia compares blake3 hashes of all project files against .gl/index_state.json. If nothing changed, the graph is ready instantly. If a subset of files changed, only those files are reparsed.
Cross-file resolution
Section titled “Cross-file resolution”Call edges are resolved across file boundaries. code_callers, code_callees, code_trace, and code_impact all work correctly for calls that cross module boundaries — including Rust’s cross-file deferred batch resolution.
Starting a session
Section titled “Starting a session”# Index oncegl init .
# Keep it live while you workgl watch . &
# Check statsgl stats -p .