Zeli AvatarReal-time AI avatars
Sign in
Australian data residency · self-hosted

Real-time AI avatars,
streamed live.

Create a lip-synced, conversational talking-head from your own photo, image or video — then stream it live to any app over WebRTC. Tone-aware, self-hostable, and resident on your own Sydney GPUs.

Under a minute to first frame Real-time WebRTC Runs on your infrastructure
Real-time WebRTCMIT-licensed lip-sync corePhoto · image · video avatarsSydney · ap-southeast-2Python SDK & API
What you can build

Everything you need for a live, believable avatar

From source media to a streaming, tone-aware presenter in a few lines of code — with the models running where your data already lives.

Create from a single photoNew

Upload one headshot and get a natural, gently-moving talking head — idle motion, blinks and all — with consent gating built in.

Bring your own image

Turn a rendered character or brand portrait into a presenter. Any face-forward image becomes a drivable avatar.

Or a short video

Shoot a few seconds of footage for the most expressive, true-to-life result — bundle tone variants under one avatar.

Real-time lip-synced streaming

Frames are generated on a GPU and streamed live over WebRTC, audio and video kept in lock-step. Barge-in stops mid-sentence.

Tone & emotion aware

Replies are spoken by a tone-matched face; emotion events fire as the avatar speaks so your UI can react in real time.

Conversational or direct

Run a full model → TTS → avatar turn with send_message(), or speak exact words with talk() and incremental talk streams.

How it works

Three steps to a live avatar

01
Create your avatar

Upload a photo, image or short video in the portal. We prepare a drivable, natural-motion avatar — gated behind consent.

02
Connect the SDK

Point ZeliClient at your avatar server, call connect(), and receive synchronized audio + video frames over WebRTC.

03
Drive it with text

send_message() for a full conversational turn, or talk() to speak exact words. Emotion and transcript events stream back.

Embed it in your app

A live avatar in a few lines of Python

The SDK is a thin, fully-typed WebRTC client. Receive frames as PyAVVideoFrame / AudioFrame objects on the media plane, send text and subscribe to events on the control plane.

  • Typed, async client & session API
  • Barge-in with interrupt()
  • Emotion, transcript & speech events
  • Static full keys or short-lived session tokens
from zeli import ZeliClient, AvatarConfig, ClientOptions client = ZeliClient(    avatar_config=AvatarConfig(avatar_id="presenter-female-1080"),    options=ClientOptions(server_url="https://avatar.zeligate.ai"),) async with client.connect() as session:    await session.talk("Hi there — welcome to Zeli.")    async for frame in session.video_frames():        render(frame.to_ndarray(format="rgb24"))
The Australian wedge

Your avatars never leave your infrastructure

Unlike HeyGen, Synthesia or D-ID, Zeli Avatar is self-hosted. The models run on your GPUs in Sydney, so faces, footage and transcripts stay within Australian data residency — the difference between a demo and something compliance will actually sign off.

How the pipeline works
Zeli AvatarCloud avatar APIs
Where your data lives Your Sydney GPUsVendor's cloud, offshore
Data residency Australian, self-hostedUS / EU regions
Transport Real-time WebRTCBatch render + download
Model licence MIT-licensed coreClosed, per-seat

Bring a face to your product.

Create your first avatar and stream it live today. No offshore cloud, no per-seat lock-in — just your GPUs and a few lines of Python.