Subject: @cloudflare/voice-twilio
Documented. Doesn't ship.
- npm placeholder — 260-byte package, package.json only, no code
- Cloudflare Agents monorepo — no voice-twilio directory in packages/
- @cloudflare/voice exports map — exposes `.`, `./client`, `./react` only — no ./twilio subpath
About to architect a voice AI phone system for a client on Cloudflare’s “official” Twilio telephony adapter. Installed the package first. It’s empty.
Cloudflare’s Agent SDK documents @cloudflare/voice-twilio as the Twilio bridge — listed in the voice package README, published on npm, marked as first-party. On paper, the low-risk path.
Then I actually checked.
— On npm: a 260-byte placeholder. package.json only. No source code.
— In the Cloudflare GitHub monorepo: no voice-twilio directory exists in packages/.
— Grepped the voice package’s actual source: zero Twilio files anywhere in the repo.
— The @cloudflare/voice exports map only exposes ., ./client, and ./react. No ./twilio subpath.
Documented. Doesn’t ship.
What this actually means
Any voice-AI phone build on this SDK today means writing the Twilio bridge yourself — TwiML webhook, Media Streams websocket, mulaw audio frame handling, barge-in timing, the whole integration. The “official first-party adapter” is a roadmap commitment, not a working package.
That’s a real delta. “Install the adapter and go” is a one-day task. “Custom-build the Twilio bridge against Media Streams” is a two-to-four-week task with real edge cases around audio format conversion, websocket reconnection, and latency budgets.
Why this matters for a small business
Two transferable rules, both cheap to run before locking architecture:
1. A package name in a README is not a working package. If a vendor’s docs say their tool “supports” something, install it and import one line from it before planning around the capability. A 260-byte file takes ten minutes to catch. It saves a week of rework and a client conversation that nobody enjoys.
2. The obvious vendor isn’t always obvious. An alternative carrier — Telnyx, in this case — just became a legitimate option that it wasn’t before. Nothing changed with Telnyx. What changed is the competitor’s “first-party Cloudflare integration” advantage turned out to be vapor. When you’re going to custom-bridge either way, the carrier comparison is back to price, latency, codec support, and programmable-voice API quality on their merits.
Not a retreat from Cloudflare — a fairer comparison.
The check before you commit
Three questions. Run them on every dependency a proposal names:
— Does the dependency actually install with real code inside? — Can you import one line from it and have it resolve? — Are you building around shipped code, or around a future roadmap?
If the answer to the third one is “roadmap,” the architecture needs an escape hatch.
Posted to LinkedIn — 2026-04-22: linkedin.com/feed/update/urn:li:activity:7452821695209525249
Sources
- npmjs.com/package/@cloudflare/voice-twilio — the 260-byte placeholder
- github.com/cloudflare/agents — Cloudflare Agents monorepo (no
voice-twiliodirectory inpackages/) - @cloudflare/voice package.json — exports map excludes
./twilio
Verified 2026-04-22. If Cloudflare ships the real package later, this entry gets a revision — but today, the Twilio bridge on Cloudflare Agents is a build-your-own.