Three steps. One npm install, one Twilio setup, one MCP wire-up. Pick your AI host below — same package, same env, different one-liner.
Global install gets you the crixin binary in every terminal — voice lives under crixin voice — plus instant access from your AI host via npx.
npm i -g crixin
# or, no global install — npx fetches on demand:
npx -y crixin voice help
Crixin doesn't ship with credentials baked in. You need a Twilio account (free trial gives you a sandbox number), then export three env vars:
export TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export TWILIO_AUTH_TOKEN=your_auth_token
export TWILIO_PHONE_NUMBER=+15555550100
# Optional — only needed if you call transcribe_call
export DEEPGRAM_API_KEY=...
direnv, or 1Password CLI to inject these per-shell so they're not sitting in ~/.zshrc in plain text. Whatever you use, your AI host launches from that environment.
Verify with the doctor:
crixin voice doctor
TWILIO_ACCOUNT_SID ✓
TWILIO_AUTH_TOKEN ✓
TWILIO_PHONE_NUMBER ✓ (+15555550100)
Same npm package, same stdio MCP transport. The host-specific config is one line each.
claude mcp add crixin-voice -- \ npx -y crixin voice mcp
Restart your Claude Code session once. The agent now has make_call, send_sms, and the rest.
// ~/.cursor/mcp.json
{
"mcpServers": {
"crixin/voice": {
"command": "npx",
"args": ["-y", "crixin", "voice", "mcp"]
}
}
}
Cursor auto-reloads. Open the Composer and ask: "use crixin voice to call +15555550100 and ask their hours."
# ~/.codex/config.toml [mcp_servers.crixin-voice] command = "npx" args = ["-y", "crixin", "voice", "mcp"]
Restart codex. codex mcp list should show crixin-voice as the entry name.
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"crixin/voice": {
"command": "npx",
"args": ["-y", "crixin", "voice", "mcp"]
}
}
}
Restart Claude Desktop. The hammer icon shows the new tools.
Simplest possible smoke test — the CLI bypasses MCP and calls Twilio directly. Replace the destination with your own number.
crixin voice call +15555550100 "Hello, this is a test call from Crixin Voice."
You should see:
Call placed: CA94e1d8…3a02 → queued
Then ask your AI host the same question and watch it call make_call on your behalf.
~/.zshrc. Use launchctl setenv or run the host from a terminal.TWILIO_PHONE_NUMBER needs the leading + and country code, e.g. +15555550100.