OpenAI-Compatible & OpenRouter Providers
This release adds two new LLM providers, restructures the settings UI around the voice pipeline architecture, and fixes Apple Silicon deployment.
New LLM Providers
- OpenAI-compatible: Connect to any server exposing the OpenAI API — LM Studio, vLLM, LocalAI, text-generation-inference, and others. Configurable base URL with optional API key.
- OpenRouter: Access 200+ models (GPT-4, Claude, Llama, Mistral, etc.) through a single API key. Searchable model dropdown for easy selection.
- Both providers support streaming and tool calling
Voice Pipeline UI Restructure
- Settings panel reorganized into 5 tabs: Agent, Prompt, Voice Pipeline, AI Provider, Integrations
- STT decoupled from LLM — speech recognition (Speaches or Groq Whisper) is now an independent choice, no longer auto-coupled to the LLM provider
- Voice Pipeline tab groups STT + TTS together, reflecting the actual audio flow
- AI Provider tab combines provider selection with LLM parameters (temperature, context size, max turns)
- Setup wizard expanded from 3 to 4 steps: STT → LLM → TTS → Integrations
- Restart prompt when changing providers — notifies that the agent needs a session restart
Apple Silicon Deployment
- Speaches container added to
docker-compose.apple.yamlfor Piper TTS and faster-whisper STT PIPER_URLenvironment variable decouples Piper TTS from the STT service URLSyncOpenAITTSwrapper bypasses httpx async context issues in LiveKit's forked subprocesses- Conditional Piper auto-switch — only switches from Kokoro to Piper for non-English when a Piper service is actually available
- WebRTC port range fixed —
livekit.yamland compose files now agree on 51000-51100 (previously mismatched)
Connection Testing
- Test endpoints for OpenAI-compatible (
/setup/test-openai-compatible) and OpenRouter (/setup/test-openrouter) - Model discovery — tests return available models for dropdown population
- URL validation on settings save for all URL fields
i18n
- English, French, and Italian translations updated with new pipeline/provider keys
- Groq API key sharing noted contextually when both STT and LLM use Groq
Other
OpenRouterProviderinherits fromOpenAICompatibleProvider(DRY — 76 lines vs 227)- OpenRouter includes attribution headers (
X-Title: CAAL Voice Assistant) .planning/directory excluded via.gitignore
Thanks to @mmaudet for this contribution!
Migration
- No action required for existing users — your Ollama/Groq setup continues to work unchanged
- STT provider defaults to Speaches (same as before)
- New providers are opt-in via Settings > AI Provider
Full Changelog: v1.5.0...v1.6.0