Voice Ecosystem
How the core voice package, provider adapters, automated tester, and full example app fit together as one AbsoluteJS voice stack.
#Repositories
~/abs/voice contains @absolutejs/voice: the Elysia runtime, route surfaces, assistant helpers, telephony bridges, storage, proof, operations, and framework UI exports.
~/abs/voice-adapters contains independently versioned provider packages that implement the core STTAdapter, TTSAdapter, and RealtimeAdapter contracts.
~/abs/voice-tester contains @absolutejs/voice-tester: an AI caller harness that drives Twilio Media Streams-compatible endpoints, Discord voice bots, and real outbound Twilio calls.
~/abs/examples/voice is the reference app that wires browser voice, OpenAI Realtime, telephony, provider routing, assistants, Drizzle storage, @absolutejs/sync caching, ops surfaces, and proof routes together.
The comparison layer is inside the core package too: competitive coverage reports, Vapi migration helpers, provider stack recommendations, and provider contract matrices make market parity auditable.
#Runtime Flow
Browser, telephony, realtime, and tester clients connect to route paths mounted by voice() or phone-agent route helpers.
The runtime resolves context, session state, phrase hints, lexicon, language strategy, profile-switch policy, handoff policy, live ops state, and provider configuration.
Audio flows through STT/TTS adapters or a realtime adapter; turns flow into onTurn or createVoiceAssistant() handlers; traces, audit events, recordings, and delivery records flow into configured stores.
Ops and proof routes read the same runtime records to render health, delivery, SLO, incident, replay, proof-pack, provider, and production-readiness surfaces.
#Reference App
The example app uses channelDefaults() to keep correction, handoff, live ops, assistant ops, profile switching, session persistence, and phrase hints identical across /voice/intake, /voice/realtime, and /voice/telephony.
Frontend routes use getVoiceRoutePath() to switch between cascaded STT/TTS and OpenAI Realtime without changing the client stream API.
Drizzle runtime storage and an @absolutejs/sync write-behind cache keep session writes fast while preserving durable history and proof data.
The app mounts the large ops/proof surface set from one voiceConfig object so production readiness, incident evidence, provider routing, and session replay stay connected.
#Recommended Reading Order
Start with Runtime to understand voice() and the session/adapter contract.
Read Adapters and Adapter Contracts when choosing providers or writing a new provider package.
Read Comparison when evaluating AbsoluteJS against Vapi, Retell, Bland, Synthflow, or a raw provider stack.
Read Telephony when exposing a phone path or campaign dialer.
Read Testing, Scenarios, and Discord Testing when you want automated caller regression tests.
Use Route Surfaces, Ops & Proof, Storage & Testing, and API Reference when turning a demo into a monitored production system.