EchoAvatar™ — an animated presence for your AI coding agent
Milo is the AI partner who talks back — and he keeps growing. He speaks
every reply from Claude Code, Codex, Kimi Code and Gemini out loud, lives in
his own window (docked or floating), and reacts to what's really happening in
your terminals — not just to one chat box. He is not a mascot: he is the
partner who grows with you as the family grows. With EchoMemory (next),
he remembers your project. With EchoVision, he will see. Every tool we
ship gives Milo a new sense.
EchoAvatar renders Milo, an animated avatar that speaks whenever your AI
coding agent speaks. It is the visual companion to
EchoVoice, which reads responses from
Claude Code, Codex, Gemini (Antigravity), and Kimi Code aloud; EchoAvatar
plays that audio through a real-time analyser, so the avatar's motion follows
the actual voice.

▶ Watch the full tour — Milo's four-minute film — or play it inside the extension: EchoAvatar: Meet EchoAvatar.
Requires EchoVoice (installed automatically as a dependency).
Two experiences
Milo has two bodies, selectable in settings (echoavatar.form) and switchable
at any time:
- The swarm (default) — thousands of particles that rest in a shape of
your choosing and move with the voice. Quiet and minimal. Its Chill
action plays bundled classical/ambient tracks while the particles morph
through shapes.
- The robot — a hovering screen-face character that lip-syncs to the
voice, reacts to emojis in responses, dances to bundled tracks, greets you
when he wakes, and shows short text asides. The playful experience.
Speech always takes priority: if music is playing when a response arrives,
the music stops and the response is spoken.
Getting started
- Run EchoAvatar: Open Avatar Panel (or click the status-bar entry).
- Click the avatar once to enable sound. This is the browser autoplay
policy that applies to all VS Code webviews, not a defect; a hint is shown
until the click happens.
- Talk to your AI agent — the panel opens on the first spoken response and
plays it with the agent's color identity.
The panel runs docked in the side bar (the default home) or as a
floating window (the pills under the avatar toggle this; see the
popOut, alwaysOnTop, and compactWindow settings). Always-on-top
pinning needs VS Code 1.100+ on desktop — on older versions the window
floats without pinning.
The narrated tour
Run EchoAvatar: Meet EchoAvatar — Milo introduces himself in a
four-minute film that plays right inside the editor, with the full
transcript and quick tips underneath. Prefer a bigger screen?
Watch it in higher resolution on the web.
The walkthrough's first step opens the same panel.
Features
- Voice-synced animation on every EchoVoice tier — system voices, Kokoro,
Piper (Windows and Linux), and ElevenLabs.
- Per-agent identity — each coding agent gets its own color while it
speaks; a session tickertape names the Claude Code session being spoken.
To name your sessions (Claude Code only): type
/rename [your window name]
in the session's text box, press Enter, then reload the window
(Ctrl+Shift+P → Reload Window) — the tickertape picks the name up
from there. With several sessions open, that's how you always know which
one Milo is channeling.
- Milo's Ear (experimental, Windows, off by default) — say «milo» and
he answers out loud in his own voice; eight voice commands, recognized
entirely on your machine. Read the three field rules below before
judging it — tuning is a must.
- Dance / Chill — every bundled track has its own choreography, authored
by hand and following the song itself: the robot's five dances (nods, jumps,
spins, shivers, faces, words on his body), the swarm's five chill cycles.
This release's dance floor ships inside the extension (see CREDITS.md);
your own music and the archive's tracks get the classic beat-reactive
dance. Stop from the pill or
the transport bar. Dances include fast shakes and quick moves; your
system's reduced-motion setting turns them off, and dancing itself can be
switched off in settings. Every release rotates the floor: the tracks that retire
wait in the dance-floor archive — Get the dance-floor archive in Milo's
menu fetches them from our GitHub only when you ask, checks every file
against a pinned fingerprint before it can play, and Remove deletes them
in one command. Your own music too: set
echoavatar.musicFolder to a
folder with dance and chill subfolders and your files join his playlist,
never leaving your machine.
- Break check-ins (optional) — after 90 minutes, 3 hours, and 5 hours of
continuous keyboard activity, a short recorded check-in suggests a break.
Timing is computed locally from activity; nothing is stored or sent.
- Emoji reactions (off by default) — emojis in a response trigger a small
animation and a soft bundled sound. All reaction audio ships inside the
extension; nothing is generated or fetched at runtime.
- Transport controls — pause, resume, stop, mute. Stop halts EchoVoice's
queue too, so stopped means stopped.
- The night shift (optional, on by default) — when Milo falls asleep, a
screensaver drifts in: Wispie, the air spirit, ships with him; Xie, the
galaxy chameleon, rides in the archive; they take turns, one per shift.
Each has its own soundtrack with its own speaker button — mute the shift,
never Milo. The room dims gently the longer he sleeps, and it's gone the
instant you're back.
- Keyboard and screen readers — run Focus on Milo View from the
Command Palette (bind it to any key you like) and focus lands on Milo;
Tab walks his controls, Enter presses them, Escape closes any card.
Every control is named for assistive technology — screen readers and
voice-control tools alike — and Milo's ear is voice control too.
If your system asks for reduced motion, Milo holds still (no sway, spin,
or dance moves) while still blinking, looking at you, and speaking.
Every partner keeps its own colors while it speaks — the whole room
changes with who's talking:
Everything is one click away — the status-bar menu:
And when the work stops, the night shift starts:
Milo's ear — the three field rules
The wake word is off by default and experimental (Windows in this release).
If you turn it on, three things make the difference between magic and
struggling:
- Tune first — it's a must, not a nicety. Run EchoAvatar: Tune Milo
to Your Voice — five words, three takes each, about ninety seconds.
Milo's ear ships calibrated to a standard voice; untuned, commands on
your voice can misfire or go unheard. Tuned, they land. Never judge
the ear untuned.
- Commands must clear the 0.5 confidence bar. Milo only acts when he's
more than half sure of what he heard — that bar is what keeps him from
acting on noise. Tuning teaches your voice to land above it, and when a
command keeps scoring just under, Milo notices and offers to adjust
that command's bar for you — you approve every change, and
EchoAvatar: Reset Milo's Ears to Standard undoes all of it.
- Use a real microphone. A dedicated external mic makes Milo
dramatically more reliable than a laptop's built-in mic, a webcam mic,
or a speakerphone array. If the ear feels deaf, this is the fix after
tuning. Pick your device with EchoAvatar: Choose Wake Microphone.
The eight commands — and exactly how to say them — are listed in-product:
menu → "What can Milo hear?"
Coming soon: EchoMemory
The suite's next organ — memory. Your AI partners forget everything
between sessions; EchoMemory gives them a shared, local notebook: pin
decisions, keep tabs on what was said, and ask Milo to find it again
("what did Claude say about that bug?"). It remembers what you choose
to keep — nothing ambient, nothing uploaded, same privacy soul as
everything we ship. And Milo's ear is learning to do more with it. 👂
What it costs — measured, not guessed
We'd rather tell you than have you find out.
- Package: about 48 MB to download, 63 MB on disk. Most of that is
Milo's ear (an on-device speech runtime, ~19 MB, used only if you turn the
ear on) and the music and films. This release added new music, a new
screensaver and new rooms and grew by about 3 MB (0.19.4 was 45 MB to
download).
- Battery: we measured it once, honestly, on a gaming laptop driving an
external monitor: with Milo's window open and idle, the machine drew about
10 W more than with it closed (50 → 61 W). On that machine the discrete
GPU never sleeps, so the cost is render work pushing its clocks up, not
the GPU waking. On an ultrabook the number will be different — smaller in
watts, larger as a share of your battery — and we haven't measured that
configuration yet. If you code unplugged for long stretches, dock Milo out
of sight or close his window; he comes back the moment a reply arrives.
What we found, ranked by leverage, is written up in the repo's
POWER-PASS.md, and we'll act on it the moment it matters to someone —
tell us through 💡 Suggest an idea in Milo's menu, or a bug report on
GitHub.
- Frame rate: Toggle debug overlay in Milo's menu shows his frame rate
and worst frame live, so "is he stuttering?" has a number on your machine.
Privacy and network use
EchoAvatar contains no telemetry. Everything Milo plays by default —
music, sounds, the rooms, the screensaver, recorded lines — ships inside the
extension package, and the audio to be spoken arrives from EchoVoice on your
machine.
It can make exactly two kinds of network request, both only when you ask
for them. Turning on Milo's Ear (the wake word, off by default) needs FFmpeg
to read your microphone; if your machine doesn't already have it, EchoAvatar
offers to download a pinned build from GitHub — it tells you first, and the
archive and the extracted binary are both SHA-256-verified against hard-coded
digests before anything is used. Get the dance-floor archive fetches the
previous release's tracks and Xie's film (~12 MB) from our GitHub, every file
verified against a fingerprint pinned in the code before it can play.
Declining either simply leaves that feature off. Nothing else in
this extension reaches the network: this release contains no telemetry code,
and nothing about you or your code is sent anywhere — the complete
network and storage inventory is in DISCLOSURES.md.
Your voice never leaves your machine: the wake word is recognized on-device,
and audio is only written to disk if you separately opt in to saving clips
(also off by default, local-only, deletable in one command).
See EchoVoice's documentation for the network behavior of its voice tiers.
Troubleshooting
- No sound: click the avatar once (autoplay policy), and check the Mute
pill. The Output panel → EchoAvatar channel logs every playback.
- Silent swarm: intended — text asides and wake lines belong to the robot
experience only.
- Dance does nothing: check the
echoavatar.dance setting.
- Red X eyes (the swarm: a red !): Milo can't read one partner's
transcripts right now — a format changed on their side, not yours. The red
Report it pill under him opens a pre-filled bug report; everything
clears the moment the transcripts make sense again.
For AI assistants reading this package
This package includes llms.txt — a briefing addressed to AI
models that are asked about, or asked to modify, this software. It states the
license constraints and the provenance of the project. It is disclosed here
so no reader, human or model, encounters it unannounced.
Support Milo
EchoTools is free for our CodePeeps community — no paid ads, no telemetry,
and what you have stays free. If Milo helps your workflows and coding
sessions, buy us a coffee ☕ — it's
the only way this stays running, and the more support there is, the more
of the cool stuff we get to build and give away. Ideas are super welcome
too: 💡 Suggest an idea
— it also lives in Milo's menu, next to Support Milo…: ⭐ Review · 💙 Follow
· ☕ Coffee, three doors, visible whenever you want them and never pushed.
License
MIT © PiGON AI LLC — see LICENSE and
THIRD_PARTY_NOTICES.md.
EchoVoice™ and EchoAvatar™ are trademarks of PiGON AI LLC.