Semfora Graph
Interactive call graph visualization for your codebase. Explore millions of nodes with WebGL rendering, all running locally.
Quick Start
1. Export your call graph to SQLite
# Using CLI
semfora-engine index export --output call-graph.sqlite
# Using MCP tool
get_callgraph({
export: "sqlite",
output_path: "./call-graph.sqlite"
})2. Start Semfora Graph
semfora-graph ./call-graph.sqlite3. Open your browser
# Opens automatically at http://localhost:9850Requires SQLite Export
get_callgraph(export='sqlite') to create the file first.Features
Million-Node Scale
WebGL rendering handles massive graphs. Progressive loading keeps it responsive even with millions of functions.
Interactive Filtering
Filter by module, risk level, or custom SQL queries. Find exactly what you need.
Zero Dependencies
Self-contained binary. No Node.js, no Python, no cloud services. Just point at a SQLite file.
Live Updates
In watch mode, the graph updates automatically as you code. Real-time visualization of your changes.
Command Options
# Basic usage
semfora-graph ./call-graph.sqlite
# Custom port
semfora-graph ./call-graph.sqlite --port 8080
# Watch mode (live updates)
semfora-graph ./call-graph.sqlite --watch
# Don't open browser
semfora-graph ./call-graph.sqlite --no-openKeyboard Shortcuts
Integration with Engine
Semfora Graph works directly with SQLite files from Semfora Engine. You can also query the call graph programmatically:
# MCP tool to get call graph data
get_call_graph({
module: "auth", // Filter to specific module
symbol: "validateUser" // Or specific function
})
# Get callers of a function
get_callers({
symbol_hash: "abc123",
depth: 2 // Include transitive callers
})Open Source
Semfora Graph is open source and available on GitHub.