VoxCore is a FastAPI-based voice pipeline worker built on Pipecat. It accepts inbound and outbound calls through telephony adapters, runs a real-time speech pipeline, uploads recordings, and delivers structured results back to VoxBridge.

How it works

  1. A telephony provider, LiveKit room, or campaign attach request reaches a fleet worker.
  2. VoxCore reserves one call slot through CallTracker.
  3. VoxCore fetches bot configuration from VoxBridge.
  4. The pipeline runs: customer speech -> STT -> LLM/tools -> TTS -> audio response.
  5. On call end: recording uploads, auto-disposition/post-call analysis runs, and durable result delivery sends the call back to VoxBridge.

Transports

VoxCore supports four transport modes:
TransportProtocolAudioUse case
WebSocketiCallMate WSS8kHz LINEAR16iCallMate telephony dialler
LiveKit SIP InboundLiveKit SDK16kHzDID → LiveKit room → bot
LiveKit SIP OutboundLiveKit SDK16kHzVoxBridge-triggered outbound calls
ExotelExotel WebSocket8kHz LINEAR16Exotel Voicebot applet
Beyond the four transports, two more LiveKit entry points are first-class call routes on the same pipeline:
  • Campaign attach (POST /attach) — VoxDialler creates and screens the LiveKit SIP call first, then asks VoxCore to join the already-answered room as the bot.
  • Web widget (POST /livekit/widget) — embeddable browser web-call entry point that joins a LiveKit room and runs the same pipeline.
All call routes share the same pipeline factory and post-call logic. The route-specific code owns only connection setup, metadata extraction, hangup/transfer primitives, and transport cleanup.

Agent Desk handoff

On the LiveKit routes (inbound, outbound, attach), instead of a SIP transfer the bot can escalate to a human agent: VoxCore enqueues a durable handoff to VoxBridge and starts a hold worker that keeps the caller engaged while an agent is located. A successful enqueue sets disconnected_by = "transfer_to_agent", and the hard route timeout deliberately does not tear down a call that has been handed off.

Tech stack

ComponentTechnology
RuntimePython 3.12, FastAPI, uvicorn
Pipeline frameworkPipecat 1.2.1
STTDeepgram Nova-3, Deepgram Flux, Soniox
LLMGoogle Gemini, OpenAI, Google Vertex AI
TTSElevenLabs, Sarvam
VADSilero (ONNX)
Turn detectionSmartTurnV3 (ONNX)
Recording storageS3-compatible storage: DigitalOcean Spaces or MinIO
Package manageruv

Statelessness

VoxCore is architecturally stateless with respect to business data. It does not own bots, campaigns, users, call history, CRM mappings, or analytics. Those live in VoxBridge and MongoDB. The cross-call state inside a worker is operational:
  • CallTracker tracks active call IDs to enforce MAX_CONCURRENT_CALLS.
  • Result and Agent Desk outboxes persist delivery attempts so transient VoxBridge failures do not immediately lose post-call results or handoff requests.
  • Provider clients and caches may be reused inside the process for performance.
Workers can be independently restarted. A crash can drop the active call on that worker, but it should not corrupt durable platform state.