Give your AI agent the ability to make phone calls
Open-source outbound call-control runtime. The browser-use for phones.
$ pip install call-use from call_use import CallAgent
outcome = await CallAgent(
phone="+18001234567",
instructions="Cancel my subscription"
).call()
print(outcome.disposition) # "completed" Everything you need for AI phone calls
A complete runtime for outbound call control -- from simple calls to complex multi-step workflows.
3 Lines of Code
Make a phone call with just 3 lines of Python. No boilerplate, no complex setup.
IVR Navigation
Navigate phone menus, press DTMF buttons, and handle hold music automatically.
Human Takeover
Pause the agent, join the call yourself, then hand control back when ready.
Approval Flow
Agent asks for permission before taking sensitive actions. You stay in control.
Works Everywhere
Python SDK, CLI, MCP Server, REST API -- pick the interface that fits your stack.
Open Source
MIT licensed, fully self-hostable, no vendor lock-in. Own your infrastructure.
Four interfaces, one runtime
Use call-use however it fits your workflow. Every interface shares the same powerful engine.
from call_use import CallAgent
async def cancel_subscription():
agent = CallAgent(
phone="+18001234567",
instructions="Cancel my subscription",
on_event=lambda e: print(e)
)
outcome = await agent.call()
print(outcome.transcript)
print(outcome.disposition) # "completed" Works with your stack
Integrates with any AI framework or agent runtime through four flexible interfaces.
Claude Code
via MCP Server
LangChain
via Python SDK
OpenAI Agents SDK
via Python SDK
CrewAI
via Python SDK
Any Bash Agent
via CLI
Any HTTP Client
via REST API
How it works
A two-process architecture that keeps your agent code separate from the real-time voice pipeline.
Your Code
SDK / CLI / MCP / REST
LiveKit Cloud
Real-time voice
Twilio SIP
Phone connectivity
PSTN
Phone network
Two-process model
The call-use worker runs alongside LiveKit, handling real-time voice interaction, IVR navigation, and DTMF tones. Your application code connects through any of the four interfaces and receives structured events and outcomes.
Why call-use
Stop rebuilding phone infrastructure. Get to production in minutes, not months.
| call-use | Build from scratch | Pine AI | |
|---|---|---|---|
| Make a phone call | 3 lines | months | sign up + $$$ |
| IVR navigation | built-in | weeks | built-in |
| Human takeover | built-in | weeks | -- |
| Approval flow | built-in | weeks | -- |
| Open source | Yes | -- | -- |
| Self-hostable | Yes | -- | -- |
| Multiple interfaces | 4 | DIY | 1 |
Get started in 4 steps
From zero to your first AI phone call in under 5 minutes.
$ pip install call-use # .env
LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=your_api_key
LIVEKIT_API_SECRET=your_api_secret
TWILIO_ACCOUNT_SID=your_sid
TWILIO_AUTH_TOKEN=your_token $ call-use worker start from call_use import CallAgent
outcome = await CallAgent(
phone="+18001234567",
instructions="Cancel my subscription"
).call()