Choreographer
One gesture is a beat. A routine is a performance: wave, then think, then present the thing you just made. Build one on the timeline, watch the whole thing on a live avatar, then save it to your agent and play it by name from any embed.
Start from a routine
Five performances built from the shipped slot vocabulary. Load one, then change anything: they are starting points, not templates you have to keep.
Your routine
Each row is one beat. Drag to reorder, set how long it holds, and point any step at a different clip. The stage follows every edit.
No steps yet
Pick a gesture below to add the first beat, or load one of the routines above.
Add a gesture
The fixed slot vocabulary. A step names a slot, so a routine shared with another agent still plays that agent's own take on each gesture.
Ship it
Save the routine to an agent you own and it travels with that agent: the public manifest carries it, and any embed can play it by name.
Already on this agent
Sign in to save this routine to an agent. Everything else on this page works without an account, and your routine is already in the URL.
Play it from your own site
The routine below is live: paste it into any page that already renders an
<agent-3d> embed.
Show the JSON
Exactly what gets stored at meta.choreographies, and exactly what
PUT /api/agents/:id/animations accepts.
A routine is a list of slots and holds, not a list of animation files: the same routine looks different on an agent that has remapped its own gestures on the vocabulary page, which is the point. The wire format, the storage shape and the playback API are documented in docs/choreography.