Zeli AvatarDeveloper docs
v0.1.0

Python SDK / Configuration

Configuration

Three dataclasses shape a session: AvatarConfig (the persona), ClientOptions (where the server is), and SessionOptions (per-session media settings).

from zeli import AvatarConfig, ClientOptions, SessionOptions

AvatarConfig

Describes the avatar persona to bring to life.

FieldTypeDefaultDescription
avatar_idstr | NoneNonePrepared avatar to render (uploaded files are keyed by filename stem). If omitted, the server default is used.
namestr | NoneNoneHuman-friendly persona label.
voice_idstr | NoneNoneVoice to speak with.
llm_idstr | NoneNoneConversational model id for send_message.
system_promptstr | NoneNoneSystem prompt priming the model.
language_codestr | NoneNoneBCP-47 language, e.g. "en".
emotion_responsiveboolFalseSwitch tone clips to match the reply's emotion.
enhanceboolFalseRegion-limited mouth restoration for sharper lips/teeth.
enhance_strengthfloat | NoneNoneBlend factor for enhance in [0, 1].
loop_mode"boomerang" | "forward" | NoneNoneHow the idle loop repeats while speaking.
max_session_length_secondsint | NoneNoneHard cap before the server tears the session down.

avatar_id and voice_id are honored today. The remaining fields are applied where the target server supports them.

ClientOptions

Client-wide settings: where the server is and how to reach it.

FieldTypeDefaultDescription
server_urlstr"http://localhost:8080"Base URL of the avatar server.
connect_pathstr"/connect"Persistent WebRTC offer/answer path.
ice_serverslist[dict] | NoneGoogle STUNICE servers for NAT traversal.
connect_timeoutfloat30.0Seconds to wait for the media connection.
client_labelstr | NoneNoneOptional label attached to requests for observability.

SessionOptions

Per-session settings passed to connect().

FieldTypeDefaultDescription
video_quality"high" | "auto""high""auto" lets the server adapt to bandwidth.
receive_videoboolTrueSubscribe to the inbound video track.
receive_audioboolTrueSubscribe to the inbound audio track.

Example

client = ZeliClient(
    avatar_config=AvatarConfig(
        avatar_id="presenter-male-1080",
        voice_id="your-voice-id",
        emotion_responsive=True,
        enhance=True,
        enhance_strength=0.5,
    ),
    options=ClientOptions(
        server_url="https://avatar.zeligate.ai",
        connect_timeout=20.0,
    ),
)
 
async with client.connect(SessionOptions(video_quality="auto")) as session:
    ...
Zeli Avatar · real-time avatars over WebRTC · self-hostable · AU data residency · source