Open source · MIT licensed

Stop reading code.
Start asking it questions.

Point it at any GitHub repository and have a real conversation with it — architecture, data flow, where something happens, how to add a feature. Retrieval-augmented generation over source code.

The problem

You land on an unfamiliar repository with 400 files and a README that says “see the docs.” The docs are stale. grep gives you 90 hits with no ranking and no explanation. Onboarding eats days — not because the code is hard, but because finding the relevant 200 lines is hard.

LLMs explain code beautifully, but they can’t hold a whole repository in their head and they confidently invent functions that don’t exist. This closes that gap: index the repo into a semantic vector space, retrieve only the passages that matter, and force the model to answer from retrieved code — citing the files it used.

What it does

Built for the questions you actually have on day one of a new codebase.

🔗

Any repo, one URL

Paste a GitHub link — or a /tree/branch URL to target a specific branch.

🧩

26 file types indexed

Python, JS/TS, Java, Go, Rust, C/C++, C#, Ruby, PHP, Swift, Kotlin, SQL, notebooks and config.

Index once, ask forever

The vector index is cached per owner/repo@branch, so follow-up questions skip embedding entirely.

📡

Streaming answers

Responses arrive token-by-token instead of behind a spinner.

📎

Cited sources

Every answer ships an expandable panel listing the exact files it was drawn from.

🔐

Bring your own keys

Credentials live in session state only — never logged, never persisted, never committed.

How it works

Five stages, from a URL to a grounded answer.

  1. Ingest

    A GitHub reader walks the repo tree over the API with 5 concurrent requests, keeping only source and documentation extensions.

  2. Embed

    Documents are chunked and encoded with BAAI/bge-en-icl, an embedding model tuned for retrieval over technical text.

  3. Index

    Vectors land in an in-memory vector index, memoised so a UI rerun never re-pays the embedding cost.

  4. Retrieve

    Your question is embedded into the same space; the k nearest chunks come back as context. k is tunable in the sidebar.

  5. Synthesise

    A grounding prompt hands DeepSeek-V3 only those chunks and instructs it to cite file paths — and to say “not in the context” rather than guess.

Questions that work well

Once a repository is indexed:

What does this project do, and how is it structured?
Where is authentication handled, and which middleware enforces it?
Trace the data flow from an incoming HTTP request to the database write.
What would I need to change to add a new API endpoint?
Explain the caching strategy used here and why.

Tech stack

Chosen for retrieval quality per dollar.

LayerChoiceWhy
OrchestrationLlamaIndexBatteries-included RAG primitives — readers, chunking, vector index, query engines.
IngestionGitHub readerWalks the tree API concurrently; no local clone required.
EmbeddingsBAAI/bge-en-iclStrong retrieval performance on technical text, served cheaply via Nebius.
LLMDeepSeek-V3Excellent code reasoning at a fraction of frontier-model pricing.
InterfaceStreamlitNative chat, streaming and resource caching in pure Python.