Platform overview
Call lifecycle
Every call follows the same lifecycle regardless of transport:Connection
Telephony provider connects to VoxCore via WebSocket or LiveKit SDK. VoxCore acquires a call slot from the CallTracker concurrency limiter.
Configuration
VoxCore fetches the bot configuration from VoxBridge using the bot ID and caller metadata.
Pipeline execution
The STT → LLM → TTS pipeline runs in real time. Customer speech is transcribed, processed by the language model, and the response is spoken back. Audio is recorded throughout.
Call termination
The call ends when the bot hangs up, the customer hangs up, or a timeout/error occurs. The recording is uploaded to object storage.
Statelessness
VoxCore is architecturally stateless — no business data persists between calls. Each call creates its own pipeline, transcript, and metrics, all of which are destroyed when the call ends. Results are sent to VoxBridge via webhook; recordings go to object storage. The only cross-call state is theCallTracker, an in-memory concurrency limiter that enforces MAX_CONCURRENT_CALLS per worker. It tracks active call IDs (not call data) and cleans up when calls end. Workers can be killed and restarted independently without data loss.