The open-source engine that powered our hosted AI sales team. Spin up a caller — pick a voice, pick a persona, drop in a list — and watch outcomes land in Firestore. Or just use the MCP server and let your Claude Code, Cursor, or Codex CLI agent place a call right now. MIT-licensed. Bring your own Twilio.
Every agent gets its own Twilio phone number, voice, and selling style. The hosted dashboard makes it a click; the OSS package makes it a config object. Same agents either way — they're the ones we shipped to real customers.
Stack a persona on top: standard, closer (drives commitment), warm_intro (soft opener), or follow_up (re-engagement). Full roster →
Crixin Voice ships every primitive that ran our hosted Teams product — campaigns, leads, outcome classification, compliance — exposed as MCP tools, REST endpoints, or a TypeScript library. Pick your altitude.
Three presets baked in. Agents pace retries to match.
light_touch — 1–2 calls per leadstandard — 3–5 calls, spacedfull_court_press — 5–8 callsDrop in a CSV or pull leads from Google Places. Every call lands a structured outcome.
interested · not_interestedno_answer · voicemailcallback with scheduled timeOff-hour calls don't go out. DNC requests are honored mid-call. AMD before any prompt.
Drop the engine straight into Claude Code, Cursor, or Codex CLI and your agent can place a call, drop an SMS, or read back a transcript — without you writing webhooks or babysitting Twilio.
to + prompt, or raw TwiML.to, from, status.No host-specific glue. Same npm package, same MCP transport, same env vars.
claude mcp add crixin-voice -- \ npx -y crixin voice mcp
// ~/.cursor/mcp.json
{
"mcpServers": {
"crixin/voice": {
"command": "npx",
"args": ["-y", "crixin", "voice", "mcp"]
}
}
}
# ~/.codex/config.toml [mcp_servers.crixin-voice] command = "npx" args = ["-y", "crixin", "voice", "mcp"]
Set your Twilio creds in the environment your AI host launches from. Everything else is the agent's problem.
export TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx export TWILIO_AUTH_TOKEN=your_auth_token export TWILIO_PHONE_NUMBER=+15555550100 # Optional — only needed if you ask transcribe_call to use Deepgram export DEEPGRAM_API_KEY=... crixin voice doctor # verify config
No SaaS in the middle. Calls are placed straight to Twilio's REST API. Recordings live in your Twilio account. We never see your audio, your transcripts, or your phone numbers.
Crixin Voice was a hosted SaaS — multi-tenant, Stripe-billed, 4 voices × 4 personas, Google-Places lead sourcing, Firestore campaign management, GPT-4o-mini outcome classification. We ran it. It worked.
We open-sourced the engine so you don't have to wait for the hosted relaunch — and so when it does come back, you'll already know the primitives. See pricing & the hosted waitlist →