vani
A Cloudflare-native voice session runtime (Durable Objects + Workers AI) with a shared client contract, a headless React hook, and an optional UI layer.
Types + websocket contract to keep client/server in lockstep.
A React hook + client state machine for managing session lifecycle.
A mobile-friendly reference UI.
Styling is currently inherited from the host app’s Tailwind/CSS (isolation later).
Make the voice session a first-class, stateful primitive (Durable Object per session) and keep client and server locked via a shared typed contract.
Aim for a cheap control plane (Workers + DOs) and push costs into model usage. Your bill depends on model choice, audio volume, and concurrency.
Vapi is a managed voice platform; LiveKit is a real-time media SFU. Vani is a small, self-hostable voice agent runtime over websocket + DO state.
Default server: https://shvm.in