Changelog
User-visible changes only. Internal refactors and infrastructure work omitted.
v1.1 — Avatars (ScaiVatars)#
- Every ScaiBot can opt into being a 3D avatar via a new "Avatar" tab in the admin UI.
- Public WebSocket gateway at
wss://scaigrid.scailabs.ai/v1/public/scaibot/avatar/ws-interactive. Same embed token the chat and voice widgets already use — one credential, three surfaces. - Wire protocol compatible with the standalone ScaiVatars service: identical JSON envelopes, identical action set (
start_session,resume_session,text_to_speech,send_text,send_voice,get_history,stop_command), identical blendshape format. send_textis fully wired: user text → bot persona + avatar-mode rules + LLM → TTS → lipsync, all in one chunk with the assistant message persisted to history. Uses the bot's configuredmodel,max_context_messages,temperature,top_p, andmax_tokens_per_response.send_voiceis fully wired: base64 audio (PCM or WAV) → ScaiInfer STT (scaiinfer/stt-voxtral) → delegates tosend_text. Transcript surfaces on the response chunk asdata.transcriptionwhen the client requestsinclude_transcription.- Per-bot cross-origin allow-list. Customer origins (
https://customer.example.comorhttps://*.customer.example.com) are explicitly whitelisted per bot; the WebSocket rejects browser connections from anywhere else. - Live lipsync. ScaiInfer node generates ARKit-compatible blendshape coefficients in time with the synthesized voice; client receives both in the same response chunk so audio + face animation are sample-accurately in sync.
- Tenant-scoped session admin. Active and recent avatar sessions surface in the same admin panel as the bot's other surfaces.
- Avatar mode system-prompt rules. Every LLM call (
send_text, including the LLM stage ofsend_voice) carries an appended block teaching the model it's a 3D avatar — no Markdown, no visual references that don't translate to speech, no claims to see the user. Operators override the persona with a per-botavatar_system_prompt; the rules block is appended automatically. avatar_updateevent on session open. Right afterstart_sessionorresume_sessionsucceeds, the server pushes the bot's current 3D config (model_url,blendshape_profile,idle_animation) via the protocol's existingavatar_updateevent_type. Clients load the right model and idle animation without a separate HTTP fetch. The event is part of the standalone protocol's event_type enum — zero compatibility risk; clients that ignoreavatar_updatedrop it silently per spec.- Per-bot lipsync engine routing.
avatar_blendshape_profileis now passed through to the ScaiInfer node as theengine_kindselector. Future expressive lipsync variants ship as a new engine_kind without a controller code change; operators flip the per-bot profile to opt in.
v1.0 — Launch#
First generally-available release.
- Embeddable chat widget with floating-bubble and inline-mount modes.
- Managed and linked knowledge modes; PDF / DOCX / Markdown / HTML / plain-text ingestion with OCR fallback.
- Tone configuration via structured fields; no system-prompt-writing required.
- Five escalation trigger types (keyword, intent, sentiment, confidence, explicit) × four action types (email, webhook, Slack, ScaiQueue).
- Conversation persistence with full transcript, citations, and escalation history.
- Server-side embed-token issuance with optional visitor identity.
- Analytics dashboard in the admin UI: conversations, escalations, tokens, top topics.
- Audit-log integration via the standard ScaiGrid audit pipeline.