repo-graph

Editing code you
half-remember?

grep, skim, guess the signature…

find the real symbol

one name → the actual node

then read it

the real source — not an almost-right guess
$ grep -rn "SendFriendRequest" .
11 hits · 4 files · still guessing what it expects
$ repo-graph find SendFriendRequestHandler
SendFriendRequestHandlerfriends_controller.go:95
$ repo-graph read SendFriendRequestHandler · :95
func SendFriendRequestHandler(c *gin.Context) {
    claims, ok := middleware.RequireClaims(c)
    target := c.Param("publicId")
    if target == "" || target == claims.ID {
        c.JSON(400, gin.H{"error": "invalid"})
    }

Dumping the whole repo?

50,000 chars · accuracy rots as it fills

scope it to one feature

a fraction of the tokens, all the signal
$ repo-graph dense_text
≈50,000 charsRGR = repo_graph::graph::RustGraph RS = repo_graph::server [TOPOLOGY] RGR::__init__ > RGR::_build_flows RGR::downstream > RGR::_traverse RS::status > RS::get_graph RS::activate > RS::get_graph RS::impact > RS::get_graph … 1,300 more nodes … endpoint:GET protected/groups route:/groups/activities/:groupId component:GroupsComponent service:UserProfileService …
$ repo-graph dense_text GroupsComponent
≈2,600 chars[SCOPES] groups feature GroupsComponent > sortMessages GroupsComponent > loadActivities /groups > GroupsController GroupsController > MongoDB

FE calls the backend…
where?

grep each half — can't link them

one trace

GroupsComponent → /groups

the exact path

8 hops, frontend to data
$ grep "groups" web/ ; grep "groups" backend/
two greps, two halves · the link is invisible
$ repo-graph trace GroupsComponent /groups
Groupscomponent /groupsroute controllerservice MongoDBdata

Where does it live?

grep returns 131 hits — which one?

one seed

a keyword, that's it

the whole cluster, ranked

spreading activation — most relevant first
$ grep -rn "groups" .
131 matches across 40 files · no ranking, no idea
$ repo-graph activate GroupsComponent
0.62GroupsComponentclass
0.11sortMessagesmethod
0.08loadActivitiesmethod
0.05resolveRoomIdmethod
0.04GroupsControllerservice

Where does this
feature start?

grep → read → grep → read…

one flow

name the feature, that's it

entry → data, one call

the feature as layered tiers
$ grep "groups" · cat · grep · cat …
15 files deep, still mapping it in your head
$ repo-graph flow groups
ENTRY
/groups
/groups/:id
SERVICE
GroupsController
HANDLERS
sortMessages
loadActivities
DATA
MongoDB

Add it in one line

no API key · no account · runs local

works in every AI client

it's just an MCP server

mapped instantly

13 tools, ready to navigate
$ uvx mcp-repo-graph --repo .
Claude Code
Cursor
VS Code
OpenAI Codex
Gemini CLI
Windsurf
Antigravity
Claude Desktop
any MCP client
scanned 2,887 nodes · 53 cross-stack links · 13 tools ready