How axie22/orbit works
Orbit is an interview-practice product: candidates choose a technical problem, work through it in an interactive coding session, and receive AI guidance grounded in problem material. The web app also supports spoken sessions, while a separate worker handles real-time audio and the video pipeline prepares tutorial material for retrieval. The graph reflects the documented product capabilities and sampled call paths; unsampled UI wiring and later video-processing stages are represented only where their directory is supported, without asserting specific calls.
Main entry points: index.ts LiveKit worker · PracticeSession.tsx Practice session · ingest.py Video ingestion · VoiceRecorder.tsx Voice controls
Components 24
Practice experience
- Problem selection
interv-ai/app/select/page.tsx - Problem preview
interv-ai/app/components/select/ProblemPreviewCard.tsx - Practice session
interv-ai/app/practice/[id]/PracticeSession.tsx - Code editor
interv-ai/app/components/CodeEditor.tsx - Voice controls
interv-ai/app/components/voice/VoiceRecorder.tsx
Web services
- Problem listing API
interv-ai/app/api/problems/route.ts - Problem detail API
interv-ai/app/api/problem/[id]/route.ts - Chat API
interv-ai/app/api/chat/route.ts - Room token API
interv-ai/app/api/token/route.ts - Code execution API
interv-ai/app/api/code/run/route.ts - Code runner
Interview runtime
- LiveKit worker
livekit-worker/src/index.ts - Worker problem lookup
livekit-worker/src/db.ts - Streaming interviewer
livekit-worker/src/llm.ts - Google speech recognition
- ElevenLabs speech synthesis
livekit-worker/src/tts.ts - LLM chat service
LLM/app.py
Problem knowledge
- Problem store
- Problem retrieval
LLM/src/problem_retriever.py - Gemini generation
LLM/src/llm_client.py
Tutorial data
- Video ingestion
video_pipeline/pipelines/ingest.py - Transcript and media processing
video_pipeline/pipelines - Media asset store
Other components
- Candidate
Connections 29
- Candidate → Problem selection: selects problem
- Problem selection → Problem listing API: loads problems
- Problem listing API → Problem store: queries
- Candidate → Problem preview: reviews prompt
- Problem preview → Practice session: starts session
- Practice session → Problem detail API: loads problem
- Problem detail API → Problem store: reads problem
- Candidate → Code editor: edits code
- Code editor → Practice session: updates code
- Practice session → Chat API: sends chat
- Chat API → Gemini generation: generates reply
- Candidate → Voice controls: speaks
- Voice controls → Room token API: requests room token
- Room token API → LiveKit worker: dispatches join
- LiveKit worker → Worker problem lookup: loads context
- Worker problem lookup → Problem store: reads problem
- LiveKit worker → Google speech recognition: streams audio
- LiveKit worker → Streaming interviewer: requests response
- Streaming interviewer → ElevenLabs speech synthesis: synthesizes speech
- LiveKit worker → Voice controls: publishes audio
- Practice session → Code execution API: runs code
- Code execution API → Code runner: invokes
- LLM chat service → Problem retrieval: gets context
- LLM chat service → Gemini generation: generates reply
- Problem retrieval → Problem store: retrieves problem
- Video ingestion → Media asset store: uploads media
- Video ingestion → Problem store: records metadata
- Video ingestion → Transcript and media processing: prepares media
- Transcript and media processing → Media asset store: stores assets