crixin · voice

Hire AI agents that actually pick up the phone.

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.

npx crixin voice mcp Install in 30 seconds Meet the agents

Hire a roster, not a script. Four voices. Four personas.

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.

Sarahfemale · warm
Best for relationship-building.
Soft pacing, lots of acknowledgment, lands the meeting at the end without sounding like she's closing.
Jamesmale · professional
Best for B2B outreach.
Tight, executive register. Wastes no airtime on small talk; great for VPs and ops leaders.
Mikemale · friendly
Best for local businesses.
Casual and disarming. Restaurants, retail, trades — calls that need to feel local, not corporate.
Emilyfemale · professional
Best for enterprise.
Composed, formal, structured. The voice for procurement, finance, and compliance buyers.

Stack a persona on top: standard, closer (drives commitment), warm_intro (soft opener), or follow_up (re-engagement). Full roster →

The whole sales loop. Open-source.

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.

Campaigns & cadences

Three presets baked in. Agents pace retries to match.

  • light_touch — 1–2 calls per lead
  • standard — 3–5 calls, spaced
  • full_court_press — 5–8 calls
  • Custom cadences via TypeScript

Leads & outcomes

Drop in a CSV or pull leads from Google Places. Every call lands a structured outcome.

  • interested · not_interested
  • no_answer · voicemail
  • callback with scheduled time
  • Qualification score & transcript per lead

Compliance, by default

Off-hour calls don't go out. DNC requests are honored mid-call. AMD before any prompt.

  • TCPA windows — 8am–9pm local time
  • DNC list checked pre-dial
  • Answering machine detection (AMD)
  • Auto-DNC on opt-out keywords

How compliance is enforced →

Six MCP tools. One stdio server.

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.

make_call
Outbound call. to + prompt, or raw TwiML.
send_sms
SMS / MMS. Messaging Service support.
transcribe_call
Deepgram, 30+ languages incl. Arabic.
get_call
Status, duration, price, timestamps.
list_calls
Filter by to, from, status.
list_recordings
Recordings + auth-protected media URLs.

Three hosts. Same one-liner.

No host-specific glue. Same npm package, same MCP transport, same env vars.

Claude Code

claude mcp add crixin-voice -- \
  npx -y crixin voice mcp

Cursor

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "crixin/voice": {
      "command": "npx",
      "args": ["-y", "crixin", "voice", "mcp"]
    }
  }
}

Codex CLI

# ~/.codex/config.toml
[mcp_servers.crixin-voice]
command = "npx"
args = ["-y", "crixin", "voice", "mcp"]

Configure once. Forget it exists.

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.

Why this is open now.

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 →