Voice Gateway
Web voice interface via LiveKit + OpenAI Realtime.
Last updated: 2026-01-03
Overview
The voice gateway enables browser-based voice conversations with Norns using:
- LiveKit - WebRTC infrastructure
- OpenAI Realtime - Real-time voice AI (speech-to-speech)
- Norns - LangGraph agent for all actions
Architecture
Browser --> LiveKit (WebRTC) --> voice-gateway --> OpenAI Realtime API
| |
+--------+-----------+
|
v
Norns Agent
How It Works
- User opens voice.ravenhelm.dev
- Browser connects to LiveKit via WebRTC
- Voice gateway receives audio from LiveKit
- Audio streams to OpenAI Realtime API
- OpenAI handles speech-to-speech with function calling
- Function calls delegate to Norns agent
- Responses stream back through the pipeline
Environment Variables
| Variable | Description |
|---|---|
LIVEKIT_URL | LiveKit server URL |
LIVEKIT_API_KEY | LiveKit API key |
LIVEKIT_API_SECRET | LiveKit API secret |
OPENAI_API_KEY | OpenAI API key (for Realtime) |
URL
Frontend: voice.ravenhelm.dev
Deployment
cd /Users/ravenhelm/ravenhelm/services/voice-gateway
docker compose build
docker compose up -d
Logs
docker logs -f voice-gateway
Files
| File | Purpose |
|---|---|
agent/main.py | LiveKit agent + OpenAI Realtime |
agent/norns_tools.py | Function tools for Norns |
agent/requirements.txt | livekit-agents, openai plugin |
Dockerfile | Python 3.11 |
docker-compose.yml | Traefik routing |