CodeAtlas
Visualize your codebase as an interactive 3D graph. Files, classes, methods, and functions become nodes; the calls and imports between them become edges. Spin the graph to see the shape of your project at a glance, then dive into individual nodes to navigate to the source.


What it does
- Parses your workspace with tree-sitter (running entirely in WebAssembly — no native binaries to install).
- Builds a graph of files, types, methods, and functions, plus the call and import edges connecting them.
- Renders the graph in 3D using force-directed layout (or a tree / radial layout if you prefer).
- Lets you click a node to jump to the corresponding source line, or click an edge to frame both endpoints.
- Detects "unused" nodes (no inbound calls and no other references in the source) so you can find dead code.
Supported languages
| Language |
Extensions |
| TypeScript / JavaScript |
.ts .tsx .js .jsx .mts .cts .mjs .cjs |
| Python |
.py .pyi |
| Swift |
.swift |
| Go |
.go |
| Rust |
.rs |
| Java |
.java |
| Kotlin |
.kt .kts |
| C / C++ |
.c .h .cpp .hpp .cc .cxx .hh .hxx |
| Ruby |
.rb .rake |
| PHP |
.php |
| C# |
.cs |
| Arduino |
.ino |
Getting started
Open a folder or workspace in VS Code, then launch CodeAtlas one of two ways:
- Right-click any folder in the file explorer and pick Visualize Codebase 3D at the bottom of the menu. This scans just that folder — useful for narrowing down to one module in a big repo.
- Or use the Command Palette (
Cmd/Ctrl-Shift-P) and run CodeAtlas: Visualize Codebase 3D. This scans the whole workspace.
The graph opens in a new editor tab. Drag to orbit, scroll to zoom.
Features
Navigation
- Click a node — opens the source file at the corresponding line, beside the graph.
- Click an edge — frames both endpoints in the camera so you can see the connection clearly.
- Click in the sidebar list — same as clicking the node in the graph.
- Search box — filter the list and highlight matches in 3D. Matched nodes are bright; everything else fades.
Categorization
- Nodes are colored by type (file, class, method, function, external) and by language-specific kind (struct, enum, protocol, SwiftUI View, ObservableObject, actor, extension, etc.).
- The legend in the toolbar shows the color key. Filter by type or kind from the sidebar dropdown.
Pinning & notes
- Click the star icon in the sidebar list to pin a node — it gains a yellow halo in 3D and stays easy to find.
- Add a note to any node: Shift-click it in the graph, hover and press
N, or click the pencil in the sidebar. Notes appear in the tooltip and persist per workspace.
Path-finding
- Click Find path in the toolbar, then click two nodes. CodeAtlas runs a breadth-first search across all edges and shows only the path between them.
Layouts
- Sphere (force-directed, default), radial-out, or tree (top-down / bottom-up / left-right / z-out).
- Cluster by folder pulls related files together by directory.
Other
- Re-scan without reloading the extension.
- Export PNG — save the current view as an image.
- Stats panel — counts by type, kind, language, and link type.
- All toolbar settings (filters, layout, sidebar state) persist per workspace.
Gestures and shortcuts
| Action |
Gesture / keys |
| Orbit |
Drag |
| Zoom |
Scroll |
| Pan |
Arrow keys (Shift = faster) |
| Open file at node |
Click node |
| Frame an edge's endpoints |
Click edge |
| Add / edit a note |
Shift-click node, or hover and press N, or right-click node |
| Pin / unpin a node |
Star icon in sidebar list |
| Cancel path-finding pick mode |
Esc |
Unused detection
A node is flagged as unused when:
- It has no inbound
calls edges, and
- Its name appears at most once across the whole codebase (i.e. only at its declaration).
Common framework entry points are exempted automatically — main, init, constructors, dunder methods, UIKit/SwiftUI/React/Vue/Angular/Android lifecycle hooks, servlet handlers (doGet, doPost, …), test methods (test*, setUp, tearDown), Unity callbacks, Arduino's setup/loop, etc. — so legitimate framework callbacks don't get false-flagged.
- Files larger than 1 MB are skipped to keep the scan fast.
- Some files with very complex syntax (large SwiftUI view bodies, for example) may fail to parse cleanly. CodeAtlas still adds them to the graph as plain file nodes so cross-file imports remain visible; the parse-failure summary lists which files were affected.
Privacy
CodeAtlas runs entirely locally. It does not send your code, file paths, or any other data over the network. The only network activity is the standard VS Code extension lifecycle (install, update).
License
MIT.
Credits
Built with tree-sitter and 3d-force-graph. Grammar files come from the official tree-sitter packages, plus alex-pinkus/tree-sitter-swift and fwcd/tree-sitter-kotlin.
| |