Living bot avatars
Your bots' own avatars come alive when you pick a bot in chat, with voice on or off. Idea from the Kree8 mascot post.
Lead: No new orb. Every bot keeps the avatar it has. A shared motion layer and the art each avatar already has make it react to the bot's real state and voice.
Live prototype with real Allternit avatars
What it's for
- Bots people remember. The bot you picked stands on the stage and greets you, like the mascot in the post.
- Status without text. You can see that the bot is listening, thinking, working, speaking, waiting on you, muted, done or failed.
- A face for voice. The avatar moves with your mic level while it listens and with its own voice while it speaks.
- Tap to talk. A click on the avatar starts or stops voice with that bot.
- Every avatar works. Packs, cast, Gizzi, the A:// mark, vendor art and photos all get the shared motion.
What each kind of avatar does
| Avatar kind | Uses art it already has | Shared motion layer |
|---|---|---|
| Cast (Goldie, Modem, …) | idle, blink, speaking, working and done art; mouth moves with the voice; pupils follow you | |
| Sprite-sheet packs and pets | one animation row per state (petRowFor): wave, wait, review, run, sleep, jump, fail |
|
| Gizzi | emotion per state; its own pointer tracking | |
| Eyes-and-body avatars | Eyes gaze (lookAt), blink, emotion |
|
| A:// mark | AllternitOrb states; it already reads the voice level |
|
| Vendor art, photos | none: one still image |
Shared layer: breathe, lean to the pointer, hop on pick, squish on click. It also pulses and glows with the voice. With reduced motion, only the state art changes.
Where it shows
Audit: plan vs what exists (main 89fe2691)
| Piece | Exists today | Verdict |
|---|---|---|
| Bot as voice face | VoiceBotAvatar + voice.css:65-107: the wrapper breathes and pulses; the art inside never gets the phase |
EXTEND: phase into the art; A:// orb gets speaking |
| Phone calls | InappCallLayer, CallParties, PhoneLiveCall: initials or a fixed orb, no voice level |
NEW: the real bot avatar on calls |
| Breathe, greet, hops | BotAvatarMotion, PortraitPetMotion, petHopAt |
REUSE |
| Eye-follow, poke | only in BotLookStage and Gizzi; Eyes lookAt has no caller |
EXTEND: move into BotAvatarMotion |
| Run state on avatar | pet signal: chat turns, tools, thread status | REUSE |
| Voice state on avatar | code reports a voice phase | EXTEND: add listening, speaking, muted |
| Cast state art | look picker and Meet loops only, on a timer | EXTEND: pick art by real state |
| Chat stage | BotLookStage "giant stage" (setup, main bot panel) | EXTEND: real-state input |
| Voice bar | VoiceOrb only |
EXTEND: bot avatar prop |
| Tap to talk | none; VOICE_START_EVENT exists |
NEW |
| Needs you | thread waiting maps to speaking (pet-sheet.ts:153) |
EXTEND: fix the mapping, report approvals |
Revised build plan
- No new component. The work goes into
BotAvatarMotion,BotLookStageand the pet signal (pet-activity.ts). - Voice into the pet signal.
VoiceSessionreports listening, speaking and muted. Every avatar and the desktop pet then see voice. - Fix
waiting. "Needs you" gets its own art. Tool approvals report it. - Motion. Move the eye-follow and poke from
BotLookStageintoBotAvatarMotion. WireEyes lookAt. Add a squish on click. - Cast art by state. Cast looks pick their idle, speaking, working or done art from the real state.
- Chat stage. Reuse
BotLookStageon the launch screen and empty bot chat, fed by real state. - Voice bar + calls. The voice bar and the phone call screens show the bot's own avatar, with the voice level.
- Tap to talk. A click on the stage avatar fires
VOICE_START_EVENT. - Fix in scope.
ActiveAgentMascot.tsx:121honors the picked look. Remove the duplicate orb-state mapping (BotAvatar.tsx:48). - Ship. Desktop, the phone view and the PWA, plus docs. The PWA deploy waits for your go-ahead.