LiveKit — Sovereign Voice-Agent
Self-hosted WebRTC-Server + Python-Agent gegen unseren Bunker-Stack. Whisper-STT, qwen-LLM, voxcpm2-TTS — alles in einem Sovereign-Container, keine Audio-Sekunde verlässt unsere Hardware.
Architektur
Browser (Mikrofon)
│ wss:// — TLS-terminiert am Edge
▼
Edge-Reverse-Proxy → Sovereign-Container
├─ /rtc → LiveKit-Server (WebRTC)
├─ /token → Token-Issuer (FastAPI/JWT)
└─ / → Demo-UI
Python-Agent-Worker joined denselben Room:
├─ VAD (silero)
├─ STT — whisper-large-v3-turbo-bunker
├─ LLM — qwen3.6-27b-bunker (mit Persona)
└─ TTS — voxcpm2-bunker/lea (deutsche Voice)
Sovereign-Aspekt
Vapi und ElevenLabs Conversational AI sind US-Cloud-Closed-Source. Unser Stack: komplett Open-Source und komplett im Bunker. Auch die Telefon-Bridge (sobald wir SIP einbauen) bleibt sovereign — kein Anruf läuft jemals durch ein US-Datacenter.
Demo-Persona
Die Demo läuft als generische Bestellauskunft: fragt nach Kunden- oder Bestellnummer und antwortet mit plausiblen Mock-Status. In einer Production-Variante hängt das LLM am eigenen Datenmodell — als RAG über eure Doku oder als read-only-Adapter gegen ein bestehendes Backend.
Lessons-Learned
1) WebRTC will Host-Networking
UDP-Port-Range für Media (~50 Ports) + TCP-Signalling. Docker-Bridge mit Port-Range-Mapping zerschießt die ICE-Candidates. network_mode: host im Container ist die unkomplizierte Wahl.
2) use_external_ip: true in livekit.yaml
Damit der Server seine extern erreichbare IP als ICE-Candidate ausweist statt der internen Container-Adresse — sonst läuft der Handshake aus dem Browser ins Leere.
3) Whisper über LiteLLM ist STT-OpenAI-kompatibel
STT-Plugin nimmt einen openai-Adapter mit base_url-Override — drop-in gegen den Bunker-LiteLLM, kein Custom-Provider nötig.
4) Kernel-Keyring-Limits für Docker-in-Container
Bei Docker innerhalb eines unprivilegierten LXC-Containers laufen die Default-Keyring-Limits voll → „disk quota exceeded" beim Start. Fix: kernel.keys.maxkeys auf dem Host hochsetzen.
📦 Als Addon buchbar
Voice-Stack on-prem für eure Use-Cases:
- LiveKit-Server + Agent-Worker in eurem RZ oder unserem
- STT/LLM/TTS-Wahl (Bunker, OpenAI, Azure, ElevenLabs — je nach Sovereignty-Anspruch)
- Optional SIP-Bridge für Telefon-Inbound
- Web-Client oder Embeddable-Widget
- 3-5 Personentage