Live through Sunday. Post your spookiest clip with #NightOfTheLivingAgents to win a year of Tavus and LiveKit credits.Contest: spookiest clip wins a year of creditsContest rules →
A Halloween experimentpresented by

Night of the Living Agents

Four monsters you can actually video-call. Faces by Tavus, voices by LiveKit. Pick one, say hi, try not to scream.

How it’s built

Build your own monster.

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 a year
of credits.

A year of Tavus and LiveKit creditsfinal prize to be confirmed

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 grand prize, a few honorable mentions, 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.