Your microphone audio travels to a Cloudflare Worker over a WebSocket. The Worker turns it into text, asks the agent for a reply, turns the reply into speech and streams it back.
Hearing
Whisper on Cloudflare Workers AI
A simple volume-based check decides when you have stopped talking. The recording of your sentence then goes to Whisper (large-v3-turbo) on Workers AI. There is no separate speech-to-text account or key to manage.
Stack: 16 kHz audio frames over a WebSocket, energy-based pause detection, Workers AI binding.
Thinking
Llama 3.3 70B, with code that overrules it
The model answers from a fixed fact sheet about the service. Plain code runs afterward and replaces replies that claim a booking or promise a callback, which this demo cannot do. In shop mode, safety rules run without the model: if a caller mentions a gas smell, the agent tells them to leave and call 911.
Stack: Workers AI, structured JSON replies, rule-based guards, the same receptionist logic our customers' lines use.
Speaking
Kokoro, an open-source voice we host
The voice is Kokoro, an open-source model, running on our own server and played back at 24 kHz in your browser. The greeting and goodbyes are pre-rendered so they start instantly, and a short spoken acknowledgement covers the wait while the answer is prepared.
Stack: Kokoro-82M (ONNX) on a CPU server, 24 kHz PCM streaming, pre-rendered fixed lines.
Guards
Caps, one call at a time, a kill switch
Each visitor gets three sessions a day and the whole demo gets sixty. A call ends after two minutes. Only one conversation runs at a time, because the voice server is the bottleneck. An operator can switch the whole thing off, which also ends live calls within seconds.
Stack: Turnstile verification, atomic counters in D1, one-use tickets, an origin allowlist.