Tavus vs FaceMode: PAL Platform or Avatar Layer?
Tavus vs FaceMode for real-time avatar video: hosted PALs with built-in agent logic vs a render layer for the voice stack you already run.
Tavus and FaceMode both get a live talking face in front of your users, but they sell different layers of the stack. Tavus builds PALs - Personified Application Layers - a hosted agent product where the face, the conversational model, memory, tools, and perception ship together. FaceMode is a render layer: it takes the audio your existing voice agent already produces and publishes lip-synced video into a LiveKit or Daily room you own.
This is a documentation-based comparison by FaceMode, not an independent performance benchmark. Sources were checked on November 7, 2026. Tavus ships faster than almost anyone on the watchlist - four changelog entries in the last two weeks alone - so verify current docs before building on any claim below.
Tavus vs FaceMode: the short version
| Criterion | Tavus | FaceMode |
|---|---|---|
| What it is | Hosted PAL platform: face + voice + turn-taking + memory + tools + perception (tavus.io) | Audio-in, avatar-video-out render layer for your existing agent (product summary) |
| Conversation stack | Built-in LLMs, knowledge base, memory, objectives, guardrails - or bring your own LLM and use echo pipeline mode (pricing, LiveKit plugin docs) | Your STT, LLM, TTS, and turn detection stay where they are; FaceMode only sees audio |
| Integration surface | Python and Node.js LiveKit plugins, Pipecat plugin, hosted CVI rooms, PAL Maker no-code | LiveKit Python/TypeScript plugins, Python Pipecat plugin, direct REST + WebSocket (integrations) |
| Room ownership | Plugin mode joins your LiveKit room; CVI mode hosts the room on Tavus | Your LiveKit or Daily.co room, always |
| Custom avatars | Replica trained from ~1 minute of video; 3-7 free trainings/mo by plan, then $40-65 each (pricing) | One front-facing portrait; five library styles including non-photorealistic |
| Published latency figure | Phoenix-4.5: 134ms model latency claim, boundary unspecified on homepage | ~960ms audio-to-rendered-frame target (product summary) |
| Pricing | $59-397/mo tiers + $0.32-0.37/min overage, 30s minimum per conversation | Credits, 1 credit = 1 second of video; beta: 60 free min, top-ups closed |
| Availability | GA, self-serve signup | Private beta, waitlist |
Two products sharing one word: "avatar"
The confusion starts because Tavus can act in two modes. In PAL mode, Tavus is the whole agent: it hosts the room, runs turn-taking (Sparrow), perception (Raven), rendering (Phoenix), a built-in LLM or one you bring, knowledge base, persistent memory, objectives and guardrails, function calling, and - as of November 4 - Connectors, which let a PAL do work in Slack, Gmail, Notion, Linear, or any MCP server while it keeps talking. You are not assembling a stack; you are hiring one.
In echo/pipeline mode, Tavus behaves like the other avatar APIs: your agent produces speech, the avatar renders it. A PAL created for this mode sets pipeline_mode to "echo" with a LiveKit transport layer, and the Tavus LiveKit plugin joins your room as an avatar worker - the same architecture FaceMode uses. Tavus also ships a Pipecat integration that reached feature news this cycle: version 1.15.0 of pipecat-ai lets expressive-conversation tags drive the avatar's facial emotion.
So the real comparison is not "which face is better" - it is "which boundary do you want to buy at." Tavus's bet is that the face works best when the same company owns the whole conversation. FaceMode's bet is that you already own the conversation and only need the face.
Integration paths: same plugin shape, different scope
In LiveKit plugin mode the two look nearly identical at the attachment point. Tavus, from the LiveKit plugin docs:
from livekit.plugins import tavus
avatar = tavus.AvatarSession(
face_id="...", # stock or custom Tavus face
pal_id="...", # your PAL, configured with pipeline_mode="echo"
)
await avatar.start(session, room=ctx.room)FaceMode, adapted from its Python integration README:
import os
from livekit_plugins_facemode import AvatarSession
avatar = AvatarSession(
api_key=os.environ["FACEMODE_API_KEY"],
avatar_id=os.environ["FACEMODE_AVATAR_ID"],
)
await avatar.start(
agent_session,
ctx.room,
room={
"type": "livekit",
"url": os.environ["LIVEKIT_URL"],
"token": os.environ["LIVEKIT_WORKER_TOKEN"],
},
)Both attach to an AgentSession you already run and join your room as a secondary participant. The difference shows up around the snippet. FaceMode's start call carries the room binding explicitly - you mint the token, you own the room, and the same room object accepts Daily.co. Tavus's plugin hides the room wiring inside the PAL configuration, which is one less thing to set up and one more thing living in the vendor's console.
FaceMode additionally ships @facemode/agents-plugin-facemode for Node.js and pipecat-facemode for Python pipelines; Tavus's plugin surface also covers both runtimes plus a Pipecat service, so framework coverage alone is not a deciding factor here. The LiveKit avatar plugin tutorial and the Pipecat avatar walkthrough cover the FaceMode wiring end to end.
Agent surface: what ships inside a PAL
This is where Tavus earns its price and where the honest answer may be "you don't need it." A PAL carries capabilities FaceMode deliberately does not offer:
- Perception: Raven-1 processes voice, video, and screen context together with a claimed under-300ms context freshness; Raven-2 (October 23) processes camera and screen about 3x faster (changelog).
- Emotion control:
set_emotionon the avatar session inlivekit-plugins-tavus1.8.9+ /@livekit/agents-plugin-tavus1.9.4+, and tag-driven emotion inpipecat-ai1.15.0+. - Memory and knowledge: persistent memory across conversations and a multilingual knowledge base (October 27).
- Meetings: PALs can join your Zoom, Meet, or Teams calls as a participant.
- Tool use: Connectors - MCP servers attached to a PAL, up to 10 per PAL, with background task delegation.
- Recordings and governance: conversation recordings ($0.03/min on Growth), transcripts, objectives, and guardrails.
FaceMode has none of this, by design. It sees audio and returns a face. Your turn detection, your memory, your tools, your compliance posture stay in your code. For a product team that already built those - or needs them under its own control for regulatory reasons - a hosted PAL duplicates the stack. For a team that has none of them, a PAL is months of platform work arriving on day one.
The emotion question deserves a nuance Tavus's docs make easy to miss: tag-driven emotion (set_emotion, Pipecat expressive tags) requires a Tavus face on the render end. FaceMode takes the audio-driven approach - a warm Cartesia or ElevenLabs delivery carries its prosody straight into the animation, with no tags to wire. Different mechanisms, same goal; test which reads better on your script.
Custom avatars: video replica vs one portrait
Tavus custom faces train from roughly a minute of video - plans include 3 trainings a month on Starter, 7 on Growth, then $65 or $40 per additional replica. That produces the most photorealistic custom identity in the category, at the cost of needing footage and consent workflows for a real person.
FaceMode's custom avatar path is one front-facing portrait upload, and the library deliberately includes five art styles - realism, semi-realism, 3D animation, anime, flat vector - where most of Tavus's value concentrates in photorealistic humans. If your product wants a mascot or an anime tutor rather than a person's likeness, that trade-off flips.
Latency: read the measurement boundary
Tavus's homepage claims 134ms latency for Phoenix-4.5, described as the fastest in market and "25% faster than any other model." It does not specify on that page what the 134ms spans - likely model inference, not end-of-turn response time. FaceMode publishes a ~960ms audio-to-rendered-frame target: the boundary is explicit (audio in, frame out), and it is a target, not a benchmarked result.
These numbers do not measure the same thing, so do not rank them head-to-head. The only independent measurement reviewed this cycle is a webrtc.ventures Pipecat test across LiveAvatar, Tavus, Simli, and Anam: interrupted speech kept playing 1.0-1.4s after the user spoke versus a 0.6s no-avatar baseline, and time-to-first-video-frame ranged 3.5-9.8s across vendors. Those are pipeline numbers through Pipecat 1.12, not any vendor's marketing figure - and a reminder to measure the boundary you care about in your own room before believing anyone's milliseconds, including ours.
And for completeness: Tavus's Griffin - the video-to-video Human Interaction Model behind the 48% Turing-test headline - remains a research preview for select testers, with no public API or pricing as of this check. It is a research signal, not something you can build on this quarter.
Pricing: subscription plus per-minute vs credits
Tavus developer pricing (checked November 7): Free gets 25 conversational minutes a month with 1 concurrent stream; Starter at $59/mo includes 100 minutes and 3 concurrent streams; Growth at $397/mo includes 1,250 minutes and 10 concurrent. Overage runs $0.37/min on Free and $0.32/min on Starter, each conversation carries a 30-second minimum charge, and replica training beyond plan quotas costs $65/$40 per face. Consumer PAL subscriptions ($0/$20/$50) are a separate product.
FaceMode's beta terms are 3,600 credits free - 60 minutes at 1 credit per streamed second - with ten-minute sessions, one concurrent session, and no paid top-ups until GA. There is no published FaceMode production rate yet, so a cost comparison past the evaluation phase is not possible today.
The shape difference still matters: Tavus is a monthly commitment with per-minute overage, which suits steady production volume. Credits suit spiky evaluation and pre-launch traffic - but FaceMode cannot serve production traffic until top-ups open, so plan accordingly.
Where each product is a stronger fit
Tavus is the stronger candidate when you want the agent, not just the face. One vendor for face, voice, turn-taking, perception, memory, tools, meetings, and recordings - GA today, self-serve, 30+ languages, 1080p, enterprise SLAs on the top tier. If your team would otherwise build a conversational stack from parts, a PAL is a coherent product and Tavus is shipping it faster than anyone else in this category.
FaceMode is the stronger candidate when the agent is already yours. Your STT, LLM, TTS, and turn detection stay put; the face attaches at the room edge in your LiveKit or Daily room; a portrait is enough for a custom avatar; and the pricing model is metered seconds, not a subscription floor. The trade-offs are real: private-beta limits, no hosted agent features, and no published production pricing yet.
Questions to answer before choosing
Is FaceMode a Tavus alternative? For the render layer - yes, it is an alternative worth testing, and it is the narrower product on purpose. It does not replace a PAL's memory, tools, perception, or meetings; if you need those, compare agent platforms, not avatar APIs.
Does Tavus work with my own voice agent? Yes - via the echo pipeline mode on the LiveKit and Pipecat plugins, your agent supplies the speech. Evaluate that surface against other avatar APIs, not against PAL mode.
What should you measure in a trial? Session startup, response onset, interruption recovery, and avatar availability under your real load - with the same utterances, region, and voice settings on both. Then check concurrency, session duration limits, and account-specific pricing before deciding.
For a broader view across every vendor in this space, see the interactive avatar APIs pillar comparison. For a FaceMode proof of concept, request beta access or start with the direct API quickstart.
Primary sources
[ Try it yourself ]
Give your voice agent a face.
Beta testers get 60 free minutes of avatar video. Keep your voice stack, keep your room - just add the face.