Skip to main content
We recommend using Tavus’s Full Pipeline in its entirety for the lowest latency and most optimized multimodal experience. Third party integrations only provide rendering, while our Full Pipeline includes perception, turn-taking, and rendering for complete conversational intelligence.
With the LiveKit Agents integration, LiveKit runs your voice assistant in the room while Tavus renders the avatar. Start a tavus.AvatarSession with your face_id as in Step 2. Tavus enables AI developers to create realistic video avatars powered by state-of-the-art speech synthesis, perception, and rendering pipelines. Through its integration with the LiveKit Agents application, you can seamlessly add conversational avatars to real-time voice AI systems.

Prerequisites

Make sure you have the following before starting:
  • LiveKit Voice Assistant App (Python or Node.js)
We recommend using Phoenix-4.5 Pro faces, which are optimized for low-latency, real-time applications.

Integration Guide

1

Step 1: Setup and Authentication

  1. Install the plugin:
  1. Set TAVUS_API_KEY in your .env file. Use the same value as your Tavus API key from Authentication.
2

Step 2: Add an Avatar to your Agent

In your LiveKit app, create an avatar session alongside your AgentSession:
replica_id / replicaId and persona_id / personaId are still accepted as deprecated aliases for face_id / pal_id.
Try out the integration using this sample code.

Advanced: Avatar Emotions

This section is optional. The integration above works without it. The Tavus PAL can visually express an emotion while it listens and speaks. Call set_emotion / setEmotion on the avatar session to set it. The PAL will show this emotion until the next call of set_emotion / setEmotion. Supported emotions: neutral, happiness, sadness, anger, fear, surprise, disgust, contempt. start() returns before the avatar joins the room, and an emotion sent before the avatar joins is dropped. Wait for the avatar with wait_for_join() / waitForJoin() first.
To let the LLM choose the emotion, wrap it in a function tool and add the tool to your Agent:
Requires livekit-plugins-tavus 1.8.9 or later (Python) or @livekit/agents-plugin-tavus 1.9.4 or later (Node.js). The plugin sends a conversation.set_emotion interaction to the avatar.