← Migrate hub

OpenAI Realtime → toolkit-voice

Same SDK shape. 74/77 events. We wrote it as a drop-in. Most teams ship in 10 minutes.

What changes

5
Lines of code changed
−75%
Effective cost change
No
Need Twilio account
0 bytes
Audio retention

The 5-line diff

JavaScript / TypeScript:

diff
- import OpenAI from "openai";
+ import { Toolkit } from "@toolkit-llm/voice";

- const client = new OpenAI();
+ const client = new Toolkit();

  const session = await client.realtime.sessions.create({
-   model: "gpt-realtime",
+   model: "toolkit-voice",
  });

  // Everything else — events, audio, tool calls, function calling — unchanged.

Python:

diff
- from openai import OpenAI
+ from toolkit import Toolkit

- client = OpenAI()
+ client = Toolkit()

  session = client.realtime.sessions.create(
-     model="gpt-realtime",
+     model="toolkit-voice",
  )

cURL:

diff
- curl https://api.openai.com/v1/realtime/sessions \
- -H "Authorization: Bearer $OPENAI_API_KEY" \
+ curl https://api.toolkit-llm.com/v1/realtime/sessions \
+ -H "Authorization: Bearer $TOOLKIT_API_KEY" \
  -H "Content-Type: application/json" \
- -d '{"model": "gpt-realtime"}'
+ -d '{"model": "toolkit-voice"}'

Run the codemod

The codemod handles imports, model strings, env vars, and webhook signature header renames across your repo.

bash
npx @toolkit-llm/migrate-openai-realtime ./src

# Output:
# ✓ src/voice/session.ts: 4 changes
# ✓ src/voice/webhooks.ts: 2 changes
# ✓ .env.example: 2 changes
# ✓ Done — 8 changes across 3 files. No conflicts.

The codemod is idempotent. Run it on a clean branch and review the diff.

Phone numbers — port your existing OpenAI/Twilio numbers

You don't have to ditch your current numbers. We handle the carrier paperwork.

  1. Email port@toolkit-llm.com with your number(s) and current carrier
  2. We send you the LOA (Letter of Authorization) — DocuSign, <5 min
  3. We submit to the losing carrier; FCC requires 5-7 business days
  4. Cutover happens at 11pm PT on the porting date — <30s downtime

What's NOT supported (yet)

  • image input (vision)
    Day 90 releaseBrain B not yet wired with cross-attention image embedder
  • speech-to-speech direct
    Day 270Pending per-customer Brain B LoRA pipeline
  • voice cloning (zero-shot)
    Day 90DP-SGD ε=4 + canary memorization tests required first

Full event matrix: /voice/compat →

Stuck mid-migration?

Founders are on Slack during business hours PT. We answer migration questions in under 30 minutes for founding-customer-beta accounts.

Apply for founding beta →