An AI-powered tool for exploring and understanding GitHub repositories. Connect any public repo, ask questions in natural language, and get visual explanations with dependency graphs, architecture diagrams, and traceable logic flows.
- Natural language Q&A β Ask how authentication works, where the API layer is, or how services connect
- Interactive visualizations β Dependency maps, request flow diagrams, and architecture graphs rendered on an interactive canvas
- Code viewer β Highlighted code snippets with exact file paths and line numbers
- File tree browser β Navigate the full repository structure
- Configurable LLM backend β Switch between OpenAI and Ollama (local) from the in-app settings
Screen.Recording.2026-03-31.at.4.19.07.PM.mov
- Next.js 16 / React 19
- CopilotKit for AI chat and actions
- React Flow (
@xyflow/react) + dagre for graph layout - Octokit for GitHub API access
- Zustand for state management
- Tailwind CSS v4
- Node.js 18+
- One of the following LLM backends:
- Ollama (default) β install from ollama.com and pull a model (default:
qwen2.5) - OpenAI β an API key with access to chat completions
- Ollama (default) β install from ollama.com and pull a model (default:
- Install dependencies:
npm install- (Optional) Set environment variables to override defaults:
# Defaults to Ollama at localhost:11434 with qwen2.5
export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_API_KEY="ollama"
export OPENAI_MODEL="qwen2.5"Or configure the LLM provider from the Settings modal in the app UI.
- Start the development server:
npm run dev- Open http://localhost:3000 and enter a GitHub repository (e.g.
owner/repoor a full GitHub URL).
src/
βββ app/
β βββ api/
β β βββ copilotkit/ # CopilotKit runtime endpoint
β β βββ github/ # GitHub API proxy (file, search, tree)
β β βββ settings/ # LLM settings persistence
β βββ layout.tsx
β βββ page.tsx
βββ components/
β βββ flow/ # React Flow node types (FileNode, FunctionNode, ModuleNode, CustomEdge)
β βββ panels/ # Main UI panels (Chat, CodeViewer, Analysis, Repository, VisualizationCanvas)
β βββ AppLayout.tsx # Main app shell after repo is loaded
β βββ CopilotProvider.tsx
β βββ LandingPage.tsx # Initial repo input screen
β βββ RepoInput.tsx
β βββ SettingsModal.tsx
βββ hooks/ # Custom hooks (useCopilotActions, useCopilotContext, useRepository)
βββ lib/ # Core logic (analyzer, github client, graph layout, file fetching)
βββ store/ # Zustand stores (app state, settings)
βββ types/ # TypeScript type definitions
Tests use Vitest with Testing Library.
npx vitest| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run start |
Start production server |
npm run lint |
Run ESLint |