AIAvatarKit v0.9.0 is a substantial step toward making conversational avatars easier to launch, richer in what they can show, and simpler to operate across channels.
Since v0.8.19, AIAvatarKit has gained a ready-to-run CLI, a rebuilt Admin Panel, shared multi-adapter pipelines, rich on-screen artifacts, and Asterisk integration—along with broad improvements to speech processing, reliability, packaging, and documentation.
✨ Highlights
- 🚀 Start with a ready-to-run CLI — Install the package, configure the required providers, and run
aiavatarto launch the built-in multilingual WebSocket application and Admin Panel. The CLI supports.envfiles, command-line settings, and custom ASGI applications, providing a smooth path from quick start to full customization. (#400, #409) - 🖼️ Let avatars show, not just tell — Extensible control-tag parsing and artifact ID resolution are now built into the adapter layer. The included WebSocket viewers can render images, charts, presentations, YouTube videos, Google Maps and directions, and sandboxed web apps as part of the conversation. (#401–#404, #408)
- 🌐 Serve multiple channels from one pipeline — Multiple adapters can now share the same VAD, STT, LLM, TTS, conversation store, and pipeline hooks, making it easier to run one avatar across web, messaging, and phone channels. (#392)
- ☎️ Connect to Asterisk-based telephony — The new Asterisk adapter supports inbound calls through ARI and bidirectional Media WebSocket audio, including call lifecycle management, hangup, REFER and bridge-based operator transfers, and media restoration after failed transfers. (#405)
- 📊 Operate with a rebuilt Admin Panel — The new light/dark interface adds pluggable authentication and safe runtime tuning. Metrics and logs are now channel-aware, making it easier to understand and optimize each deployment surface independently. (#388, #394, #395, #398)
- 🗣️ Gain more control over speech and turn-taking — TTS can now be routed per utterance by text, style, or language, with shared preprocessing, caching, postprocessing, and PCM WAV resampling. This release also adds OpenAI-compatible STT endpoints, injectable OpenAI clients, and application-controlled turn-end delays. (#389, #393, #397, #399, #413)
🗒️ Upgrade Notes
- Admin Panel: The Admin Panel has been completely rebuilt and is not API-compatible with the previous implementation. Use
aiavatar.admin_legacyif you need to retain the previous UI, APIs, API-key authentication, Character, or Control features. - Requirements and defaults: Python 3.11 or later is now formally required, and package metadata has moved to
pyproject.toml. The default OpenAI models are nowgpt-5.6-terrafor LLMs andgpt-transcribefor STT; specify model IDs explicitly if you need to preserve existing behavior or costs. - Adapter APIs: Custom adapters must implement
can_handle(session_id). Channel names are now configured on adapters rather thanAIAvatarRequest, and Twilio SMS now uses the separateAIAvatarTwilioSMSServer. - Extension APIs: Custom
SpeechSynthesizerimplementations must implementgenerate()instead ofsynthesize(). Speaker Registry and store operations are now asynchronous and must be awaited. - Resource ownership: Injected performance recorders, voice recorders, and OpenAI clients are caller-owned and should be closed by the application during shutdown.
What's Changed
- Refactor Admin Panel architecture and UI #388
- Add SessionHoldTurnEndGate for configurable turn-end delays #389
- Fix Namo turn-end evaluation below 0.5 probability #390
- Close only pipeline-owned recorders on shutdown #391
- Support multiple adapters on a shared STS pipeline #392
- Refactor TTS synthesis pipeline and add WAV resampling #393
- Group admin metrics by channel #394
- Add channel filtering to admin logs #395
- Add session data support to the dummy VAD #396
- Add speech synthesizer routing #397
- Improve Admin Panel runtime control and app integration #398
- Support OpenAI-compatible speech recognition endpoints #399
- Add an out-of-the-box AIAvatar CLI #400
- Avoid splitting on punctuation inside control tags #401
- Add extensible control tag parsing and artifact resolution #402
- Add pluggable artifact rendering to WebSocket examples #403
- Improve artifact control tag handling #404
- Add Asterisk ARI and Media WebSocket adapter #405
- Prevent duplicate speech caused by repeated LLM response content #406
- Fix oversized VRM interaction area and add view reset #407
- Add Google Maps and web app artifacts to WebSocket examples #408
- Fix CLI startup without Semantic VAD dependencies #409
- Fix async speaker registry storage #410
- Fix LLM tool decorator definition #411
- Rename duplicate VAD test module #412
- Add injected OpenAI client support #413
- Update OpenAI model defaults and generation settings #414
- Fix PostgreSQL channel filter test setup #415
- Improve test failure readability #416
- Split the monolithic README into focused documentation guides #417
- Add repository agent guides #418
- Migrate packaging to pyproject.toml #419
Full Changelog: v0.8.19...v0.9.0