Skip to main content

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

  1. User opens voice.ravenhelm.dev
  2. Browser connects to LiveKit via WebRTC
  3. Voice gateway receives audio from LiveKit
  4. Audio streams to OpenAI Realtime API
  5. OpenAI handles speech-to-speech with function calling
  6. Function calls delegate to Norns agent
  7. Responses stream back through the pipeline

Environment Variables

VariableDescription
LIVEKIT_URLLiveKit server URL
LIVEKIT_API_KEYLiveKit API key
LIVEKIT_API_SECRETLiveKit API secret
OPENAI_API_KEYOpenAI 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

FilePurpose
agent/main.pyLiveKit agent + OpenAI Realtime
agent/norns_tools.pyFunction tools for Norns
agent/requirements.txtlivekit-agents, openai plugin
DockerfilePython 3.11
docker-compose.ymlTraefik routing