← all case files
STATUS: FLAGGED

Subject: @cloudflare/voice-twilio

Documented. Doesn't ship.

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

  1. npmjs.com/package/@cloudflare/voice-twilio — the 260-byte placeholder
  2. github.com/cloudflare/agents — Cloudflare Agents monorepo (no voice-twilio directory in packages/)
  3. @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.