gitplex

Documentation

Everything gitplex does, and how to use it

From pasting your first repository to handing a coding agent a map of it. Every behaviour described here is what the app actually does; if you find a difference, it's a bug in one of them.

Start

Quick start

Three steps from a repository name to a map you can walk. No account and no API key.

  1. 1

    Paste a repository

    Type owner/repo, paste a full URL like https://github.com/psf/requests, or a branch or tag URL like …/tree/v2.32.0. Or pick one of the example chips under the box.
  2. 2

    Choose how much detail

    Architecture Map (press 1) for files and imports, or Full Code Graph (press 2) for every function, class and call. Press Enter to launch. Nothing starts until you do.
  3. 3

    Watch it map, then explore

    The scan screen shows each stage with a timer. When it finishes, the explorer opens on the graph. Click any node to start.
The Map a repository dialog over the landing page, with Architecture Map and Full Code Graph options
The detail dialog. 1 and 2 pick, Enter launches, Esc goes back.

Start

Architecture Map or Full Code Graph

Both map the same repository. They differ in how deep the parser goes, and so in how big and how fast the result is.

Architecture MapFull Code Graph
ShowsFiles, folders and the imports between themEverything in the map, plus functions, classes, calls, inheritance, routes and tests, for Python, JavaScript, TypeScript, Go and Java
How it's readFetched from GitHub without cloningShallow clone, then a full tree-sitter parse
File budgetUp to 2,000 filesUp to 6,000 files
Best forSeeing how a codebase is organised, fastBlast radius, call paths, and reading real code

You can map the same commit both ways. Each detail level is cached on its own, so switching from the map to the full graph runs a real second pass instead of reusing the first.

Start

The explorer at a glance

One canvas in the middle, with everything else arranged around it so it never covers the graph.

The gitplex explorer with the structure rail on the left, the graph in the middle and a selected file in the inspector on the right
fastapi/full-stack-fastapi-template, with a node selected.
AreaWhat it holds
HeaderThe repository and the exact commit it's pinned to, node and edge totals, and Tour, Export, Profile and Search. Accent, theme and shortcuts sit on the right.
Left railStructure (the file tree), Filters (node and edge types, node budget) and Entry points.
ToolbarLayouts, Lens, the symbols toggle, the capped warning, Fit and Reset.
CanvasThe graph. Drag to pan, scroll to zoom, click to select.
InspectorEverything about the selected node: source, metrics, relationships, and actions. On phones and tablets it rises from the bottom as a sheet.
Bottom dockYour exploration progress, a search box and the legend.

Read the graph

Nodes and edges

Every node type is a tone of your accent colour, told apart by its pattern. Your selection is always the brightest thing on screen.

NodeLooks likeWhat it is
FileSolidA source file. The backbone of every map.
FunctionHollow ringA function or method. Full Code Graph only.
ClassCore with a pale ringA class, interface or type. Full Code Graph only.
RouteSolid, brighterAn HTTP route found from framework conventions.
DirectoryHollow, greyA folder. Shown when a view includes structure.
TestSolid, recededTest code, dimmed so it never dominates.
External importSmall, darkA package from outside the repository.

Node size follows centrality: the more of the codebase flows through a node, the bigger it is. An entry point carries an extra ring in the signal colour.

Edges

At rest, every edge is a quiet line so the shape stays readable. Select or hover a node and its edges light up, tinted by type.

EdgeMeans
IMPORTSA file imports another file, or an external package.
CALLSA function calls another function or constructs a class.
DEFINESA file defines a function or class. Structure, not dependency.
CONTAINSA directory holds a file, or a class holds a method.
INHERITSA class extends another class.
IMPLEMENTSA class implements an interface.
EXPOSESA route is served by a handler function.
TESTSA test file or test function exercises this code.

Evidence and confidence

Every relationship records how it was found and how sure the parser is. Inferred edges are drawn as thinner curves; direct ones are straight.

EvidenceMeaning
ast_directParsed directly from the syntax tree
import_resolutionResolved through an import statement
name_inferenceMatched by name - may be ambiguous
framework_heuristicRecognised framework convention
unresolvedTarget could not be resolved in this repository

Read the graph

Layouts

The same graph, arranged four ways. Switch from the toolbar; nothing is re-analysed.

LayoutArranges nodes byUse it to
ForceConnections pulling related code togetherSee natural clusters and what sits at the centre
FoldersTop-level directory, largest folder in the middleCompare parts of the repository side by side
LayersDepth from the dependency roots, in rowsRead a codebase top-down, from entry to leaves
RingsHow connected each node is, hubs in the middleFind the few files everything leans on
A big repository in Layers reads best scoped to one folder. Use scope in the Structure tree, or lower the node budget.

Read the graph

Inspecting a node

Click any node, or pick it from search, and the inspector opens with everything gitplex knows about it.

SectionShows
BadgesType, language, and whether it's a test or an entry point
ActionsBlast radius, Expand, Path start, Path end, and a link to the exact lines on GitHub
MetricsDegree (direct connections), centrality (how much flows through it), and relation count
Why this is an entry pointThe specific evidence, when the node was flagged as one
DocumentationThe docstring or leading comment, when there is one
SourceThe real code, highlighted, with the node's own lines marked
RelationshipsEvery connection grouped by type and direction. Click one to jump there.

Double-click a node to expand its neighbours onto the canvas. Right-click for more: zoom to it, set it as a path end, or copy a deep link to it.

Read the graph

Structure, filters and the node budget

The left rail is how you narrow a big repository down to the part you care about.

Structure

The repository's folders and files, each with file counts and a bar showing its share of the code. Hover a folder for two actions: scope limits the graph to that folder, and the export icon writes just that folder up as Markdown.

Filters

Toggle node types and edge types on and off. Each chip shows how many of that type the repository has, in the same pattern the canvas uses.

Node budget

How many nodes the canvas draws, from 50 to 1,000 (300 by default). The most important nodes come first. When a view is trimmed, the toolbar shows capped: raise the budget, scope to a folder, or expand a node to see more.

Read the graph

Entry points

Where a person would start reading, found from static evidence only, and always with the reason shown.

gitplex checks package manifests, conventional filenames (main.py, manage.py, asgi.py, cli.py and friends), framework imports, detected routes, and graph centrality. Each hit is ranked, and the inspector tells you exactly why it was chosen. Open the Entry points section in the left rail to jump to one.

Ask it questions

Blast radius: what breaks if I change this?

Pick a node and press Blast radius. A wave travels outward through everything that depends on it, one hop at a time.

A blast radius spreading from a selected file through its dependents

The wave follows real dependencies in reverse: whatever IMPORTS, CALLS, INHERITS, IMPLEMENTS, EXPOSES or TESTS the node, up to three hops out. Structure (DEFINES, CONTAINS) is left out: changing a function doesn't break the folder it lives in.

The readout counts dependents per hop, so you can see how far a change reaches and which code a reviewer should read first. Click empty canvas to clear it.

Press Copy on the readout to take the result with you: Markdown lists every dependent grouped by hop, with its file and line, ready for a pull request or a coding agent; JSON gives the same for scripts.

Ask it questions

Find a path: how does A reach B?

Mark two nodes and gitplex traces the shortest chain of real relationships between them.

  1. 1

    Select the first node

    Then press Path start in the inspector, or right-click it and choose Set as path start.
  2. 2

    Select the second node

    Press Path end. The path lights up on the canvas.
  3. 3

    Read the chain

    The path panel lists every hop and the relationship that carries it, and the camera frames the route. Copy it as Markdown or JSON, or clear it with ×.

Any two nodes work: a file and a function, a class and a route, two functions. Paths are searched up to six hops, following each edge in either direction, because a real route through code often goes up an import and down a call. Routes through real relationships are preferred; one that only climbs through a shared folder is used when nothing else connects the two.

Ask it questions

The lens

A magnifier for crowded clusters that spreads the nodes under your cursor without losing the rest of the picture.

Hold Z to peek through it, and let go to return. To keep it on, use the Lens button in the toolbar.

Ask it questions

Guided tour

A suggested reading order through the repository, derived from the graph, that flies the camera from stop to stop.

The guided tour paused on a stop, explaining why it was chosen

Press Tour in the header. Each stop says what you're looking at and why it was chosen. It plays itself every seven seconds; use ← and → to move, Space to pause, and Esc to leave. Treat it as a suggestion: the order comes from structure, not from the authors.

Ask it questions

Profile, trivia and progress

A character sketch of the codebase, measured from the graph.

The repository profile card showing shape, test culture, standouts, hotspots and dependencies
PartTells you
ShapeHow coupling is spread: hub-and-spoke, layered, evenly woven, or loosely coupled, with the numbers behind it
Test cultureThe share of test files and a short verdict
StandoutsSuperlatives like the most-called function and the deepest dependency chain
HotspotsThe files most of the code runs through
Leans onThe external packages the code imports most
LanguagesThe mix of languages, by file

Trivia and progress

The progress chip in the bottom-left counts the files you've opened and the discoveries you've made, like your first blast radius or your first path. When you know the place, take the five-question trivia from the same chip; every answer comes from the graph.

Take it with you

Export for coding agents

Hand Claude, Cursor or any agent a real map of the codebase, instead of letting it crawl the repository one file at a time.

The export dialog with scope, toggles and a Markdown preview
  1. 1

    Open Export

    From the header for the whole repository, or from a folder's export icon in the Structure tree.
  2. 2

    Choose what goes in

    Keep or drop functions and classes, and import relationships. The preview updates as you change them.
  3. 3

    Copy or download

    You get one Markdown document with the structure, what each file defines, and how the files depend on each other.
Save it as CODEBASE.md at the root of your checkout, or paste it into the agent's context, and ask it to read the map before it starts. Very large scopes are capped; narrow to a folder to get the rest.

Take it with you

Links and sharing

Every map has a stable address you can send to someone.

The explorer lives at /repo/owner/repo. To point someone at one node, right-click it and choose Copy deep link; the link opens the explorer with that node selected.

Maps you open are remembered in this browser. The landing page lists them under Continue, and the repository name in the explorer header is a switcher to jump between them. An expired one shows “map again”.

Maps are kept for a day. If someone opens a link after the map has been cleared, they see a “not mapped yet” screen with a button to draw it again, which takes a few seconds for most repositories.

Take it with you

Themes and accents

Dark by default, light when you want it, and four accent colours.

The moon and sun button switches the theme. The accent bubbles (on the right edge of the site, or in the explorer header) recolour everything that uses the signal colour: buttons, pulses, and the graph's node tones. Choose from four, named after Pokémon types: Grass (parrot green), Psychic (rose), Water (sky blue) and Fire (orange). Both choices are remembered in this browser.

Take it with you

Keyboard shortcuts

Press ? in the explorer to see these any time.

Anywhere in the explorer

  • Search files, functions, classes and routes⌘K
  • Show these shortcuts?
  • Close the open dialog, menu or tourEsc

On the graph

  • Select a node and open it in the inspectorClick
  • Expand a node's neighbours onto the canvasDouble-click
  • Node actions: expand, zoom, path start/end, copy linkRight-click
  • Clear the selection and any blast radiusClick empty space
  • Peek through the lens to spread a crowded clusterHoldZ
  • Zoom around the pointerScroll

Guided tour

  • Next stop→
  • Previous stop←
  • Pause or resume autoplaySpace

Mapping a repository

  • Choose Architecture Map1
  • Choose Full Code Graph2
  • Launch the analysisEnter

Reference

How it works

No model runs at any point. The same commit always produces the same map.

  1. 01Queued
  2. 02Cloning repository
  3. 03Scanning files
  4. 04Parsing syntax trees
  5. 05Building the code graph
  6. 06Building the search index
  7. 07Deriving entry points

The repository is cloned shallow with no working tree, or read straight from GitHub for an Architecture Map. tree-sitter parses every file, and a per-language extractor walks the syntax tree. Imports, calls and inheritance are either resolved or recorded as unresolved, never guessed, and a call never resolves to code in another language. The graph is stored in FalkorDB, and search is a BM25 index combined with graph signals.

Results are pinned to the exact commit shown in the header and cached by commit and detail level, so mapping a repository twice doesn't redo the work.

Reference

Languages

gitplex reads 32 languages with tree-sitter, in two tiers. The tier decides what you see in the graph.

TierLanguagesYou get
Full symbolsPython, JavaScript, TypeScript (including JSX and TSX), Go, JavaFiles, functions, classes, routes, calls, inheritance, tests, and imports between files
Files and importsRust, Kotlin, Swift, C, C++, C#, Ruby, PHP, Scala, Dart, Elixir, Erlang, Haskell, OCaml, Clojure, Julia, Lua, Perl, R, Bash, PowerShell, Groovy, Objective-C, Fortran, Solidity, Zig, Vim scriptFiles, folders and the imports between them. Blast radius, paths and search still work at file level.

In a mixed repository each file gets its own language's treatment, so a Python backend with a TypeScript frontend is mapped in full on both sides. A call in one language never resolves to code in another. For a repository in a files-and-imports language, choosing Full Code Graph gives the same graph as the Architecture Map, so pick the map and skip the clone.

Adding a language means writing one extractor behind a shared interface; the graph builder doesn't change. See the contributing notes in the README.

Reference

Limits and privacy

LimitValue
RepositoriesPublic GitHub repositories only
Repository sizeUp to 300 MB
Files per map2,000 for an Architecture Map, 6,000 for a Full Code Graph; larger repositories are ranked and trimmed, not refused
Single fileFiles over 800 KB are skipped
New analyses8 per hour from one address; opening a map that already exists doesn't count
How long maps lastGraphs are kept for a day after they're last opened

There are no accounts and no tracking beyond the optional feedback button. Code is read to build the map and isn't sent anywhere else: no language model sees it.

Reference

FAQ

Which branch does it analyse?
The repository's default branch, unless you paste a /tree/<branch-or-tag> URL. The commit badge in the header is the exact commit the map is pinned to.
Why does my Rust, C# or Kotlin repository show only files?
Those languages are in the files-and-imports tier: gitplex maps the files and what imports what, but doesn't extract functions, classes or calls yet. Python, JavaScript, TypeScript, Go and Java get the full graph.
Why is a relationship missing?
It was either unresolvable from the code alone (dynamic imports, reflection, calls through variables), or it's outside the node budget. Check the inspector's relationship list, or raise the budget.
Why does an edge say inferred?
It was matched by name rather than proven through an import. It's usually right; the evidence label tells you how much to trust it.
Can it map private repositories?
Not today. gitplex only reads public repositories, and it never asks for a token.
Does search run Cypher queries?
No. Search is a BM25 index built during analysis and combined with precomputed graph signals. Cypher is used for node lookups, neighbourhoods and paths.

Still stuck? Use the feedback button, or open an issue on GitHub.

Your turn

Point it at the codebase you're afraid to touch.