Live through Sunday. Post your spookiest clip with #NightOfTheLivingAgents to win 3 months of Tavus Growth and a seat in the LiveKit Startup Program.Contest: spookiest clip wins Tavus and LiveKit creditsContest rules →
A Halloween experimentpresented by

Night of the Living Agents

Video-call a Living Agent, right in your browser. Faces by Tavus, voices by LiveKit. Pick one, say hi, try not to scream.

How it’s built

Build your own Living Agent.

Two platforms, one video call. Tavus renders the face in real time; LiveKit runs the voice, the brain and the transport. Both are free to start, and the whole thing is about forty lines of Python.

01Pick a face

Prompt Face Studio for a character (photoreal, animated, pixel art) and attach it to a PAL in echo mode.

02Give it a voice

Record ten seconds, clone it in LiveKit Cloud, and reference the voice ID from any TTS model via LiveKit Inference.

03Dispatch the agent

A LiveKit agent joins the room, the Tavus plugin lip-syncs the face to the audio, and your browser talks to both.

Tavus

Face Studio, PALs and the Phoenix rendering model. Generate a character, give it perception and memory, and put it on a call in minutes.

Start building with Tavus →

LiveKit

Agents, Inference and Cloud. Clone a voice, pick a model, deploy the agent, and stream to web, mobile and phones on one realtime network.

Start building with LiveKit →
# agent.py  ·  livekit-agents[tavus]
from livekit.agents import AgentServer, AgentSession, Agent, inference
from livekit.plugins import tavus

server = AgentServer()

@server.rtc_session(agent_name="night-of-the-living-agents")
async def haunt(ctx):
    session = AgentSession(
        stt=inference.STT("deepgram/nova-3"),
        llm=inference.LLM("openai/gpt-4.1-mini"),
        tts=inference.TTS("cartesia/sonic-3", voice="v_your_cloned_voice"),
    )
    # a Tavus Face Studio face + an echo-mode PAL on LiveKit transport
    avatar = tavus.AvatarSession(face_id="rc1be62601c9", pal_id="p13e53288903")
    await avatar.start(session, room=ctx.room)
    await avatar.wait_for_join()
    await session.start(agent=Agent(instructions="You are a 300-year-old vampire..."), room=ctx.room)
The spookiest clip · ends Sunday

Scare us.
Win the loot.

  • From Tavus3 months of Tavus Growth, freeThe Growth plan on us: roughly 1,300 conversation minutes a month, custom faces, concurrent sessions and recordings. What's in Growth →
  • From LiveKitA seat in the LiveKit Startup ProgramAutomatic admission, with the program's infrastructure and inference credits (up to $23K). About the program →
Submit a clip →
  1. 01

    Talk to an agent, hit Clip.

    Every call has a record button. Clips are up to 30 seconds and download straight to your device. The weirder the conversation, the better.

  2. 02

    Post it with #NightOfTheLivingAgents.

    Share on X or LinkedIn and tag @tavus and @livekit. Reposts from both teams for the ones that make us laugh, wince, or both.

  3. 03

    Entries close Sunday, Nov 2, 11:59 PM PT.

    Winners announced Wednesday, Nov 4. One winner takes both prizes; a few honorable mentions get reposts and eternal glory in the LiveKit and Tavus community channels.

Keep it kind. No real people, no gore, nothing you wouldn’t show your grandmother at a Halloween party. Entries must be original clips from this site. Judges’ decisions are final and mildly haunted.