Tree-sitter · 6 languages Up to 400 nodes
Codebase Atlas
Folders, files, classes and functions as a navigable map. Every edge is an import or call parsed from the source.
Explore
Open source · MIT · Built for students
Map a repository's real architecture, ask Gemma questions answered with file-and-line citations, run small programs, and get unstuck with a tutor that explains your errors.
Explore the AtlasAn interactive map built from real imports and calls. Click a file to trace what it depends on and what depends on it.
Example answer · illustrative
How does sign-in work?
signIn looks the user up with findUserByEmail, checks the password with verifyPassword, then signs a session tokenC1. Tokens are verified with an HMAC comparison and an expiry checkC2.
What you get
Tree-sitter · 6 languages Up to 400 nodes
Folders, files, classes and functions as a navigable map. Every edge is an import or call parsed from the source.
Explore
Gemma 4 · cited
Each claim links to the exact file and lines. Invented citations are flagged, never linked.
Ask
Repo + web
Paste the error. We search your code and the web, and keep the two clearly apart.
Research
Sandboxed · no network Python · JS · TS · C · C++ · Java
Run a small program in an isolated sandbox, see the real output, and get a line-by-line explanation of what went wrong.
Learn
Hybrid retrieval finds the definitions, call sites and importers that matter, and Gemma answers only from them.
Where is the session token verified?
readSession recomputes the HMAC of the payload and compares it before checking expiry C1.
15 export function readSession(token) { 19 const expected = createHmac(…) 20 if (expected !== mac) return null; 22 return session.expiresAt > Date.now() …
Example output · sample repository
Stack-frame names guide the search through your code; the error signature (with paths, URLs and tokens stripped) goes to the web.
Languages, hotspots, import cycles and complex functions, all computed from the index rather than estimated by a model.
Illustration · sample shape
3 total = 0 4 for i in range(len(scores) + 1): 5 total += scores[i] 6 7 print("Average:", total / len(scores))
IndexError: list index out of range
Tutor · hint
On line 4 the loop runs one step too many. What's the last valid index of a 3-item list?
The Code Tutor runs your program in a locked-down sandbox and reads the real output. It explains the error in plain language, points to the exact line, gives you a hint first, and keeps the fix one click away.
01
Import
GitHub URL or ZIP
02
Index
Parse · filter · resolve
03
Explore
Interactive Atlas
04
Ask
Cited answers
05
Learn
Run code, get tutored
Every answer keeps its three ingredients visibly separate, and when the model or search isn't available you're told plainly — nothing is made up to fill the gap.
Repository evidence
Retrieved code, cited as [C1] with file and line range.
Web sources
Real search results with links, cited as [W1].
AI reasoning
Gemma's explanation, labelled as such, inference kept apart.
Private by default: repositories and history are owner-scoped · .env files and keys are never indexed · imported repositories are parsed, never executed · Code Tutor programs run in an isolated sandbox with no network.