Skip to main content
TAC Logo

Twilio Agent Connect

A powerful SDK for building intelligent, context-aware AI agents with Twilio's communication technologies.

Python SDK PyPI CI License Getting Started

Documentation ◆ API Reference ◆ Python SDK ◆ TypeScript SDK ◆ Examples

Seamlessly integrate with Twilio Conversation Memory and Conversation Orchestrator to build LLM-powered agents with persistent memory and conversation context.

[!TIP] Building AI agents on AWS or Microsoft? Connect them to Twilio's voice, messaging, and conversation context with these dedicated packages:

  • TAC for AWS — Strands, Bedrock Agents, Bedrock AgentCore
  • TAC for Microsoft — Microsoft Agent Framework, Azure AI Foundry (incl. Voice Live), Azure OpenAI

Key Features

  • Multi-Channel Support: Built-in handling for Voice (Twilio ConversationRelay, OpenAI GPT-Live, OpenAI Realtime API), SMS, RCS, WhatsApp, and Chat
  • Outbound Conversations: Agent-initiated conversations across all supported channels
  • ConversationRelay-Only Mode: Get started quickly with TAC's voice plumbing (TwiML, WebSocket, callbacks) before adding Conversation Orchestrator or Conversation Memory
  • Memory Management: Automatic integration with Twilio Conversation Memory for persistent user context
  • Conversation Lifecycle: Automatic tracking of conversation sessions and state
  • Human Handoff: Built-in tool to route conversations to human agents via Twilio Studio Flows (including Flex)

Installation

pip install twilio-agent-connect

For server support (includes FastAPI and uvicorn for TACFastAPIServer):

pip install "twilio-agent-connect[server]"

For speech-to-speech voice over Twilio Media Streams:

pip install "twilio-agent-connect[server,gpt-live]"         # OpenAI GPT-Live
pip install "twilio-agent-connect[server,openai-realtime]"  # OpenAI Realtime

TAC requires Python 3.10 or newer.

Quick Examples

Option 1: Use the Setup Wizard

Use the Twilio Setup Wizard to automatically create a Memory Store and Conversation Configuration and generate your .env file:

git clone https://github.com/twilio/twilio-agent-connect-python.git
cd twilio-agent-connect-python
make setup  # Open http://localhost:8080

Option 2: Manual Setup

You can also create a Memory Store and Conversation Configuration manually through the Twilio Console. For a full walkthrough — credentials, Console navigation, and webhook configuration — see the TAC Quickstart.


After completing setup, here's a minimal example to get started:

Multi-Channel with OpenAI SDK

Use the OpenAI adapter to automatically inject conversation memory and user context into your OpenAI API calls across Voice, SMS, RCS, WhatsApp, and Chat channels.

First, install the required packages:

pip install openai python-dotenv

Note: python-dotenv is optional — TAC works with environment variables from any source (.env files, Docker, Kubernetes, CI/CD, shell exports, etc.).

Then create your application:

from dotenv import load_dotenv
from openai import AsyncOpenAI
from tac import TAC, TACConfig
from tac.adapters.openai import with_tac_memory
from tac.channels.sms import SMSChannel
from tac.channels.voice import VoiceChannel
from tac.server import TACFastAPIServer

load_dotenv()

tac = TAC(config=TACConfig.from_env())
voice_channel = VoiceChannel(tac)
sms_channel = SMSChannel(tac)
openai_client = AsyncOpenAI()

conversation_history = {}
SYSTEM_INSTRUCTIONS = (
    "You are a customer service agent speaking with a user over voice or SMS. "
    "Keep responses short and conversational — a sentence or two. "
    "Do not use markdown, asterisks, bullets, or emojis; your words will be "
    "spoken aloud or sent as plain text."
)

async def handle_message_ready(user_message, context, memory_response):
    conv_id = context.conversation_id

    if conv_id not in conversation_history:
        conversation_history[conv_id] = []
    conversation_history[conv_id].append({"role": "user", "content": user_message})

    client = with_tac_memory(openai_client, memory_response, context)

    response = await client.responses.create(
        model="gpt-5.4-mini",
        instructions=SYSTEM_INSTRUCTIONS,
        input=conversation_history[conv_id]
    )

    llm_response = response.output_text
    conversation_history[conv_id].append({"role": "assistant", "content": llm_response})

    return llm_response

tac.on_message_ready(handle_message_ready)
TACFastAPIServer(tac=tac, voice_channel=voice_channel, messaging_channels=[sms_channel]).start()

Note: See the getting started guide for complete setup instructions and .env configuration details.

That's it! The server automatically:

  • Creates FastAPI app with /twiml, /ws, and /webhook endpoints
  • Handles Voice, SMS, RCS, WhatsApp, and Chat conversations
  • Routes responses to the appropriate channel
  • Injects conversation memory and user profile into OpenAI calls

For configuration details and environment variables, see the getting started guide.

How It Works

TAC simplifies building AI agents by handling the integration between Twilio's communication channels and your LLM:

Message Flow

  1. Webhook/Connection Received: Twilio sends webhook (SMS) or WebSocket connection (Voice) to your server
  2. Channel Processing: Channel validates and processes the incoming event
  3. Memory Retrieval: TAC optionally retrieves user memories and profile from Memory
  4. Callback Invoked: Your on_message_ready callback receives user message, context, and optional memory response
  5. Response Handling: Your callback returns a response string that TAC routes to the appropriate channel

For detailed architecture and advanced usage, see CLAUDE.md.

Learn More

Examples & Guides:

AWS and Microsoft connectors:

  • TAC for AWS — StrandsConnector, BedrockConnector, BedrockAgentCoreConnector for AWS Strands, Bedrock Agents, and Bedrock AgentCore
  • TAC for Microsoft — AgentFrameworkConnector and VoiceLiveConnector for Microsoft Agent Framework, Azure AI Foundry (including Voice Live), and Azure OpenAI

Documentation:

  • API Reference - Full API documentation generated from the source
  • CLAUDE.md - Architecture, development guide, and API reference
  • Getting Started Guide - Setup instructions, environment variables, and troubleshooting

TAC Development / Contribution

TAC uses uv for package management. Ensure you have it installed:

uv --version

Setup Development Environment

# Install all dependencies (including dev tools)
make sync

Running Tests and Checks

# Format code
make format

# Run linting
make lint

# Run type checking
make type-check

# Run tests
make test

# Run all checks at once
make check

Release files for twilio-agent-connect 2.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for twilio-agent-connect 2.4.0
File Size Uploaded
twilio_agent_connect-2.4.0.tar.gz 125.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for twilio-agent-connect 2.4.0
File Interpreter ABI Platform
twilio_agent_connect-2.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 295.7 kB

Release files / twilio_agent_connect-2.4.0.tar.gz

Download URL twilio_agent_connect-2.4.0.tar.gz
Size 125.3 kB
Tags Source
SHA-256 checksum
How to use checksums
56f9eefde7a7ecabb0b5644f3a80dae3ab8a213e0ea2458d5fbd63eb6bdf9a2d
BLAKE2b-256 checksum
How to use checksums
c0982b0ea17f2f06c17d075d9f2e1ca49047e17232368fb07c9029056c2c738e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release files / twilio_agent_connect-2.4.0-py3-none-any.whl

Download URL twilio_agent_connect-2.4.0-py3-none-any.whl
Size 170.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
80ed75b0a0309742067f865c25d0b2d548175aa21a91f2e329dd2d8d698430f4
BLAKE2b-256 checksum
How to use checksums
9a863fa44acb6be8a7f8f6181e9007ba59ea3ae0295ba77821d4fda3fe0b9ce7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

2.5.0

2 release files

This release

2.4.0 This release

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page