Settled presence
Slow drift through the noise field, a four-second breath, a soft web. Every few seconds a faint long-range bond flickers between distant dots — heat lightning.
Chloé’s avatar · behaviour lab
Chloé is a cloud of dots joined by a shifting web — not a face, not an orb. This is the real engine she runs on, with every state, gesture and rule one click away, so you can feel what each one does and take the call or the tuning patch with you.
Loading
If this line stays, the page script did not load. The cloud starts only when you ask for it.
State
Expression
Symbol
Keys 1–7 switch state in the order above, S toggles the synthetic envelope, M the microphone, Esc stops sound and scripts.
Drive the cloud with sound
Amplitude onlyNone of these is Chloé’s voice. They feed the same number her TTS does — a 0–1 level, every frame — so you can watch amplitude move the cloud without any key. Nothing here is uploaded or recorded.
Chloé’s voice
CheckingHer own cloned voice, through each engine that can serve it, so you can hear the same line twice and watch the cloud react to each. She is never given another voice — not as a placeholder, not on error. If an engine cannot serve her, this panel says so and plays nothing.
Both engines cost metered quota, so they stay behind the operator key. It travels with each request straight to the voice service — this page holds no key and stores nothing. One click, one clip, at most 200 characters.
0 / 200
Tune
idleSliders rewrite the live rule set for the state on stage, through the same setTuning Chloé’s brain would call. Changed rules turn periwinkle; the patch panel below collects only those.
Cloud
Rules of the state on stage
Take it with you
The last thing you did, as the engine call that does it; and your tuning as the patch setTuning accepts — the shape TUNING.md asks Chloé to persist.
Last call
// nothing yet
Tuning patch
{}
How to read the cloud
Slow drift through the noise field, a four-second breath, a soft web. Every few seconds a faint long-range bond flickers between distant dots — heat lightning.
The cloud tightens and stills, turns teal, and incoming sound sends ripples inward. This is the state the microphone driver uses.
The cloud contracts and dots fire in Poisson bursts. Each fire can excite neighbours inside line range, so activation travels along the proximity web; two fires within 100 ms flash the line between them white.
Two and a half times the speed, twice the noise, a wider field and a denser web. Streamed audio blends every state toward this one, so she visibly energises while speaking.
Thirty percent speed, loose cohesion, and after about a second the dots migrate into a sustained question mark that holds until the state changes.
The cloud spreads wide and moves with energy; amplitude rides on top as breath and motion kicks radiating from a wandering speak-point. Words can fade through the centre one at a time.
A green wave radiates from the centre over 1.2 seconds, dots brighten, and the cloud returns to the previous state by itself. A one-shot, not a posture.
What is real here
The engine takes a 0–1 level per frame. On this page it comes from an analyser on whichever source is playing — the microphone, a local file, or her own voice from the narration service.
Every state and expression carries its own palette, and the palette of any state is tunable above. There is no prosody input yet: nothing on this page reads emotion out of the voice. When that lands it will arrive through setExpression, which already exists.
Fires cascade only to dots within line range, with decaying probability and a subcritical cap, so bursts of three to fifteen dots run along the web and never strobe the whole cloud. Turn the fire rate up in Tune to see the avalanches.
Six glyphs. Slots are paired with the nearest free dots, a spring pulls them in over half a second, and every formation gets a random tilt, scale and roughness so no two are alike.
The engine on stage is ChloeAvatar.js v1.1.0 from the public chloe-avatar repository, copied byte for byte and pinned to its commit. What you tune here is what she runs. Three.js is the site’s shared copy.
Clips come from the same narration proxy the Voice Playground uses: one click, one short clip, key forwarded and never stored. This page opens no live voice session and never plays a voice that is not hers.