AI-powered interactive educational visualization platform with voice-first agent interface.
pnpm install
cp .env.example .env
# Fill in your API keys in .env| Variable | Description |
|---|---|
OPENAI_API_KEY |
OpenAI API key (GPT-5.2 / GPT-5.3-codex) |
VITE_ELEVENLABS_AGENT_ID |
ElevenLabs Conversational AI Agent ID |
This app uses ElevenLabs Conversational AI with a Custom LLM backend. ElevenLabs handles STT/TTS while our backend handles all LLM reasoning and tool calling.
ngrok http 3000Copy the generated https://xxxx.ngrok-free.app URL.
- Create an Agent at elevenlabs.io
- Under LLM settings, select Custom LLM
- Set the server URL to:
https://xxxx.ngrok-free.app/api/custom-llm - Enable "Custom LLM extra body"
- Copy the Agent ID into your
.envasVITE_ELEVENLABS_AGENT_ID
pnpm run dev- Frontend: React 19, React Three Fiber, ReactFlow, Zustand, Framer Motion
- Voice: ElevenLabs Conversational AI SDK
- AI: OpenAI GPT-5.2 (generation) + GPT-5.3-codex (code editing)
- Build: Vite, TanStack Router/Start, TailwindCSS v4