The free, MIT-licensed phone runtime for AI agents. Plugs into Claude Desktop, Claude Code, and Cursor over MCP. ~10× cheaper than managed APIs.
FlowTel is the box in the middle. Your agent connects through any of four doors. Everything to the right is plumbing you don't write.
STT by Deepgram. TTS by Cartesia or ElevenLabs. Brain by Claude. Every provider is a config knob. Swap at will.
Hand FlowTel a number. It waits through the music, the menu, and the muzak. The instant a real human picks up, it bridges your callback line and gets out of the way.
Zero-token hold. The classifier runs on raw audio, not LLM tokens. You only pay raw minutes.
$ flowtel monkey +1-555-COMCAST \
--callback +1-555-YOU \
--notify discord
Define what you want. FlowTel dials, navigates the IVR, talks to the human, extracts the answer, hangs up, hands you the transcript.
Reschedule a dinner. Cancel a subscription. Find out when they close. Fight with the IRS at 3am while you sleep.
$ flowtel runner +1-555-RESTAURANT \
--goal "move my 8pm reservation to 7:30"
→ goal_met: true
→ answer: "confirmed for 7:30, party of 2"
→ transcript: ...
FlowTel answers every call to your number. Classifies the caller with Haiku: legit · sales · spam · unclear. Routes the obvious. Pings you in Discord for the rest.
One tap on Accept bridges the caller to your phone. One tap on Reject sends them to voicemail with a transcript. The Discord decision loop is the differentiator: never miss the call that matters, never answer the call that doesn't.
→ unclear caller @ +1-617-XXX-XXXX
"Hi, this is Mark from your roof guy..."
[ Accept · Voicemail · Block ]
Same runtime under the hood. Pick the door that fits your stack.
Drop-in skill. Every OpenClaw-compatible agent gets a phone.
npx clawhub install \
flowtel-ai/flowtel
Drop into any MCP client. Plug-and-play tool calls.
"flowtel": {
"command": "flowtel-mcp",
"args": []
}
Standalone binary. No agent required. Scripts, crons, one-offs.
pip install flowtel
flowtel runner ...
For your own runtime. Async, typed, no surprises.
import flowtel
phone = flowtel.Phone()
await phone.call(...)
MIT licensed. No platform fee, no per-call markup, no vendor lock-in. You bring your own keys for Twilio, Deepgram, and Claude — we pass costs straight through. Same call, ~10× less.
| Provider | Platform fee | All-in talk | All-in hold | 30-min hold | Open | Self-host |
|---|---|---|---|---|---|---|
| FlowTel | none | ~$0.04/min | ~$0.02/min | $0.60 | MIT | Yes |
| Bland Build | $299/mo | ~$0.12/min | ~$0.04/min | ~$1.20 | No | No |
| Vapi | $0.05/min | ~$0.14/min | ~$0.10/min | ~$3.00 | No | No |
| Retell | $0.055/min | ~$0.16/min | ~$0.16/min | ~$4.80 | No | No |
All-in includes platform fee + LLM (Claude / GPT-4 quality) + STT (Deepgram) + TTS (Cartesia / ElevenLabs) + PSTN (Twilio). Verified against vendor pricing pages, April 2026. FlowTel passes provider costs through, no markup.
Pre-alpha. Hold Monkey is code-complete and awaiting its first live call. Operator's offline brain is wired; inbound SIP smoke test this week. Runner just landed. Public source flips to MIT at v1.