About • How It Works • Documentation • Quickstart • Skills • Templates
Patter is the open-source SDK that gives your AI agent a phone number. You build the agent; Patter handles everything between it and the phone network — the agent loop, the language model, speech-to-text, text-to-speech, real-time voice, audio processing, and the telephony carrier.
- Build with one API in Python or TypeScript — same surface, same hooks, same events, at full parity.
- Choose the provider for every layer — LLM, STT, TTS, realtime engine, carrier — and swap any of them with one line.
- Run locally with a built-in tunnel and dashboard, or simulate a whole call from your terminal — no phone required.
Patter is the full voice stack between your application and the phone network — not just glue between an LLM and a carrier. It runs the agent loop and owns every layer of the call, and you pick the provider for each one. Compose them in Realtime, Pipeline, or Hybrid mode.
27+ provider integrations across the voice stack · 3 voice modes · 2 SDKs (Python & TypeScript) at parity.
| Layer | Choose from |
|---|---|
| LLM — text generation | OpenAI · Anthropic · Google Gemini · Groq · Cerebras |
| STT — speech-to-text | Deepgram · AssemblyAI · Cartesia · Soniox · Speechmatics · Whisper |
| TTS — text-to-speech | ElevenLabs · OpenAI · Cartesia · LMNT · Rime · Telnyx |
| Realtime — all-in-one voice | OpenAI Realtime · Gemini Live · Ultravox · ElevenLabs ConvAI |
| Telephony — phone carriers | Twilio · Telnyx · Plivo |
| Audio — VAD & suppression | Silero VAD · Krisp · DeepFilterNet |
On top of the stack: an automatic LLM fallback chain (provider failover mid-call), built-in tools / call transfer / guardrails that behave identically on every carrier, and a vendor-neutral OpenTelemetry trace of each call.
Visit the docs, or jump straight to a quickstart: TypeScript · Python.
Using Claude Code, Claude Desktop, OpenClaw, Hermes, Cursor, Codex, or another AI coding agent?
npx skills add patterai/skillsThe bundle works in ~55 agent harnesses that consume the Anthropic Agent Skills standard. Install once; every agent on your machine learns the SDK. Skills live in their own repository: PatterAI/skills.
Provider and carrier credentials are read from environment variables (e.g. TWILIO_ACCOUNT_SID, OPENAI_API_KEY) — the docs list the full catalog. Swap Twilio for Telnyx or Plivo to change carrier.
npm install getpatterimport { Patter, Twilio, OpenAIRealtime } from "getpatter";
const phone = new Patter({ carrier: new Twilio(), phoneNumber: "+15550001234" });
const agent = phone.agent({
engine: new OpenAIRealtime(),
systemPrompt: "You are a friendly receptionist for Acme Corp.",
firstMessage: "Hello! How can I help?",
});
await phone.serve({ agent, tunnel: true });pip install getpatterfrom getpatter import Patter, Twilio, OpenAIRealtime
phone = Patter(carrier=Twilio(), phone_number="+15550001234")
agent = phone.agent(
engine=OpenAIRealtime(),
system_prompt="You are a friendly receptionist for Acme Corp.",
first_message="Hello! How can I help?",
)
await phone.serve(agent, tunnel=True)tunnel: true spawns a Cloudflare quick tunnel and points your number at it — ideal for local dev. For production, use a static webhook_url (or ngrok); see Tunneling.
Each template is a self-contained repo — clone, add your .env, and run. Python and TypeScript both included.
| Template | Description | Repo |
|---|---|---|
| Inbound Agent | Answer calls as a restaurant booking assistant | patter-inbound-agent |
| Outbound Calls | Place calls with AMD and voicemail drop | patter-outbound-calls |
| Tool Calling | CRM lookup + ticket creation via webhook tools | patter-tool-calling |
| Custom Voice | Pipeline mode: Deepgram STT + ElevenLabs TTS | patter-custom-voice |
| Dynamic Variables | Personalize prompts per caller using CRM data | patter-dynamic-variables |
| Custom LLM | Bring your own model | patter-custom-llm |
| Dashboard | Real-time monitoring with cost + latency tracking | patter-dashboard |
| Production Setup | Everything enabled: tools, guardrails, recording, dashboard | patter-production |
git clone https://github.com/PatterAI/patter-inbound-agent
cd patter-inbound-agent
cp .env.example .env # fill in your keys
cd python && pip install -r requirements.txt && python main.pyThanks to all our amazing contributors!
MIT — see LICENSE.