supercallMake AI-powered phone calls with custom personas and goals. Uses OpenAI Realtime API + Twilio for ultra-low latency voice conversations. Supports DTMF/IVR na...
Install via ClawdBot CLI:
clawdbot install xonder/supercallMake AI-powered phone calls with custom personas and goals using OpenAI Realtime API + Twilio.
| Credential | Source | Purpose |
|------------|--------|---------|
| OPENAI_API_KEY | OpenAI | Powers the realtime voice AI (GPT-4o) |
| TWILIO_ACCOUNT_SID | Twilio Console | Twilio account identifier |
| TWILIO_AUTH_TOKEN | Twilio Console | Twilio API authentication |
| Credential | Source | Purpose |
|------------|--------|---------|
| NGROK_AUTHTOKEN | ngrok | ngrok tunnel auth (only needed if using ngrok as tunnel provider) |
Credentials can be set via environment variables or in the plugin config (config takes precedence).
{
"hooks": {
"enabled": true,
"token": "your-secret-token"
}
}
Generate a secure token with: openssl rand -hex 24
⚠️ Security: The hooks.token is sensitive — it authenticates internal callbacks. Keep it secret and rotate if compromised.
{
"plugins": {
"entries": {
"supercall": {
"enabled": true,
"config": {
"provider": "twilio",
"fromNumber": "+15551234567",
"twilio": {
"accountSid": "your-account-sid",
"authToken": "your-auth-token"
},
"streaming": {
"openaiApiKey": "your-openai-key"
},
"tunnel": {
"provider": "ngrok",
"ngrokDomain": "your-domain.ngrok.app"
}
}
}
}
}
}
Important: The hooks.token is required for call completion callbacks. Without it, the agent won't be notified when calls finish.
Make phone calls with custom personas:
supercall(
action: "persona_call",
to: "+1234567890",
persona: "Personal assistant to the king",
goal: "Confirm the callee's availabilities for dinner next week",
openingLine: "Hey, this is Michael, Alex's Assistant..."
)
persona_call - Start a new call with a personaget_status - Check call status and transcriptend_call - End an active calllist_calls - List active persona calls| Option | Description | Default |
|--------|-------------|---------|
| provider | Voice provider (twilio/mock) | Required |
| fromNumber | Caller ID (E.164 format) | Required for real providers |
| toNumber | Default recipient number | - |
| twilio.accountSid | Twilio Account SID | TWILIO_ACCOUNT_SID env |
| twilio.authToken | Twilio Auth Token | TWILIO_AUTH_TOKEN env |
| streaming.openaiApiKey | OpenAI API key for realtime | OPENAI_API_KEY env |
| streaming.silenceDurationMs | VAD silence duration in ms | 800 |
| streaming.vadThreshold | VAD threshold 0-1 (higher = less sensitive) | 0.5 |
| streaming.streamPath | WebSocket path for media stream | /voice/stream |
| tunnel.provider | Tunnel for webhooks (ngrok/tailscale-serve/tailscale-funnel) | none |
| tunnel.ngrokDomain | Fixed ngrok domain (recommended for production) | - |
| tunnel.ngrokAuthToken | ngrok auth token | NGROK_AUTHTOKEN env |
Full realtime requires an OpenAI API key.
This is a fully standalone skill - it does not depend on the built-in voice-call plugin. All voice calling logic is self-contained.
This plugin is not instruction-only. It runs code, spawns processes, opens network listeners, and writes to disk. The following describes exactly what happens at runtime.
When tunnel.provider is set to ngrok, the plugin spawns the ngrok CLI binary via child_process.spawn. When set to tailscale-serve or tailscale-funnel, it spawns the tailscale CLI instead. These processes run for the lifetime of the plugin and are terminated on shutdown. If tunnel.provider is none (or a publicUrl is provided directly), no external processes are spawned.
0.0.0.0:3335) to receive Twilio webhook callbacks and WebSocket media streams.x-supercall-self-test header to verify connectivity. If publicUrl is misconfigured to point at an unintended endpoint, this self-test token could be sent there. Always verify your publicUrl or tunnel configuration before starting.x-supercall-self-test) generated at startup..ngrok-free.app, .ngrok.io), URL reconstruction may vary due to ngrok's request rewriting; Twilio signature mismatches are logged but allowed through. Paid/custom ngrok domains (.ngrok.app) are verified strictly. This relaxation is limited to free-tier domains only and does not affect Tailscale or direct publicUrl configurations.Call transcripts are persisted to ~/clawd/supercall-logs. These logs may contain sensitive conversation content. Review and rotate logs periodically.
publicUrl or tunnel config points where you expect before startinghooks.token periodically and if you suspect compromiseGenerated Mar 1, 2026
Automate patient appointment reminders and confirmations using a professional persona, reducing no-shows and administrative workload. The AI calls patients, confirms availability, and updates scheduling systems via call completion hooks.
Call hotel guests post-check-in to confirm room satisfaction and offer services, enhancing guest experience without staff intervention. The AI uses a friendly concierge persona to gather feedback and relay issues to management.
Notify recipients about package deliveries or delays via voice calls with a clear, informative persona. This ensures timely communication, especially for time-sensitive shipments, and reduces missed deliveries.
Call invitees to confirm attendance for events like weddings or corporate functions, using a polite assistant persona. The AI handles responses, updates guest lists, and provides summaries via hooks.
Follow up on customer inquiries or complaints with a supportive persona, gathering details and escalating issues if needed. This improves resolution times and customer satisfaction without overloading support teams.
Offer tiered monthly subscriptions based on call volume and features like persona customization and transcript access. Target industries like healthcare and hospitality with affordable plans to automate routine calls.
Provide an API that charges per minute of call time or per call, allowing developers to integrate AI calling into custom applications. Include add-ons for advanced features like real-time analytics and webhook management.
Sell annual licenses with custom deployments, dedicated support, and enhanced security features like private tunneling. Focus on sectors like logistics and retail that require high-volume, reliable communication.
💬 Integration Tip
Ensure secure tunnel setup with ngrok or Tailscale for production webhooks, and rotate the hooks token regularly to prevent unauthorized access.
Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
Local speech-to-text with the Whisper CLI (no API key).
ElevenLabs text-to-speech with mac-style say UX.
Text-to-speech conversion using node-edge-tts npm package for generating audio from text. Supports multiple voices, languages, speed adjustment, pitch control, and subtitle generation. Use when: (1) User requests audio/voice output with the "tts" trigger or keyword. (2) Content needs to be spoken rather than read (multitasking, accessibility, driving, cooking). (3) User wants a specific voice, speed, pitch, or format for TTS output.
End-to-end encrypted agent-to-agent private messaging via Moltbook dead drops. Use when agents need to communicate privately, exchange secrets, or coordinate without human visibility.
Text-to-speech via OpenAI Audio Speech API.