Embed Conversational Video Interface
Learn how to embed Tavus’s Conversational Video Interface (CVI) into your site or app.
Overview
Tavus CVI delivers AI-powered video conversations directly in your application. You can integrate it using:
Method | Best For | Complexity | Customization |
---|---|---|---|
@tavus/cvi-ui | React apps, advanced features | Low | High |
iframe | Static websites, quick demos | Low | Low |
Vanilla JS | Basic dynamic behavior | Low | Medium |
Node.js + Express | Backend apps, dynamic embedding | Medium | High |
Daily SDK | Full UI control, advanced features | High | Very High |
Implementation Steps
This method provides a full-featured React component library. It offers pre-built, customizable components and hooks for embedding Tavus CVI in your app.
Overview
The Tavus Conversational Video Interface (CVI) React component library provides a complete set of pre-built components and hooks for integrating AI-powered video conversations into your React applications. This library simplifies setting up Tavus in your codebase, allowing you to focus on your application’s core features.
Key features include:
- Pre-built video chat components
- Device management (camera, microphone, screen sharing)
- Real-time audio/video processing
- Customizable styling and theming
- TypeScript support with full type definitions
Quick Start
Prerequisites
Before getting started, ensure you have a React project set up.
Alternatively, you can start from our example project: CVI UI Haircheck Conversation Example - this example already has the HairCheck and Conversation blocks set up.
1. Initialize CVI in Your Project
- Creates a
cvi-components.json
config file - Prompts for TypeScript preference
- Installs npm dependencies (@daily-co/daily-react, @daily-co/daily-js, jotai)
2. Add CVI Components
3. Wrap Your App with the CVI Provider
In your root directory (main.tsx or index.tsx):
4. Add a Conversation Component
Learn how to create a conversation URL at https://docs.tavus.io/api-reference/conversations/create-conversation
Note: The Conversation component requires a parent container with defined dimensions to display properly.
Ensure your body element has full dimensions (width: 100%
and height: 100%
) in your CSS for proper component display.
Documentation Sections
- Overview – Overview of the CVI component library
- Blocks – High-level component compositions and layouts
- Components – Individual UI components
- Hooks – Custom React hooks for managing video call state and interactions
This method provides a full-featured React component library. It offers pre-built, customizable components and hooks for embedding Tavus CVI in your app.
Overview
The Tavus Conversational Video Interface (CVI) React component library provides a complete set of pre-built components and hooks for integrating AI-powered video conversations into your React applications. This library simplifies setting up Tavus in your codebase, allowing you to focus on your application’s core features.
Key features include:
- Pre-built video chat components
- Device management (camera, microphone, screen sharing)
- Real-time audio/video processing
- Customizable styling and theming
- TypeScript support with full type definitions
Quick Start
Prerequisites
Before getting started, ensure you have a React project set up.
Alternatively, you can start from our example project: CVI UI Haircheck Conversation Example - this example already has the HairCheck and Conversation blocks set up.
1. Initialize CVI in Your Project
- Creates a
cvi-components.json
config file - Prompts for TypeScript preference
- Installs npm dependencies (@daily-co/daily-react, @daily-co/daily-js, jotai)
2. Add CVI Components
3. Wrap Your App with the CVI Provider
In your root directory (main.tsx or index.tsx):
4. Add a Conversation Component
Learn how to create a conversation URL at https://docs.tavus.io/api-reference/conversations/create-conversation
Note: The Conversation component requires a parent container with defined dimensions to display properly.
Ensure your body element has full dimensions (width: 100%
and height: 100%
) in your CSS for proper component display.
Documentation Sections
- Overview – Overview of the CVI component library
- Blocks – High-level component compositions and layouts
- Components – Individual UI components
- Hooks – Custom React hooks for managing video call state and interactions
This is the simplest approach requiring no coding. It leverages Tavus’s prebuilt interface with limited customization options.
- Create a conversation using the Tavus API.
- Replace
YOUR_TAVUS_MEETING_URL
below with your actual conversation URL:
This method provides basic customizations and dynamic room management for apps without framework.
- Add the following script tag to your HTML
<head>
:
- Use the following script, replacing
'YOUR_TAVUS_MEETING_URL'
with your actual conversation URL:
This method serves dynamic pages that embed Tavus CVI within Daily rooms.
- Install Express:
- Create
server.js
and implement the following Express server:
- Run the server:
- Visit:
http://localhost:3000/room?url=YOUR_TAVUS_MEETING_URL
Notes
- Supports dynamic URLs.
- Can be extended with authentication and other logic using Tavus’s API.
This method offers complete control over the user experience and allows you to build a fully custom interface for Tavus CVI.
- Install SDK:
- Use the following script to join the Tavus CVI meeting:
- Customize the conversation UI in the script above (Optional). See the Daily JS SDK for details.
FAQs
How can I reduce background noise during calls?
How can I reduce background noise during calls?
Daily provides built-in noise cancellation which can be enabled via their updateInputSettings() method.
Can I add event listeners to the call client?
Can I add event listeners to the call client?
Yes, you can attach Daily event listeners to monitor and respond to events like participants joining, leaving, or starting screen share.