RostoMake your own

Drive the face.

Every control here maps to one direct() call — the same call your app makes. Replay a scene, re-read a line as a different intent, or type your own.

The scene.

Every control here maps to one direct() call. Type your own line, pick a tone and a voice, and watch the call that produced it.

idle
A support conversation — tap any line to replay it
    Now read a line as something else

    Same words, same voice — only the intent changes. Each intent is a complete performance, so it looks the same whatever came before it.

    Say something (lip-synced)

    This demo uses a real neural voice where enabled (your browser otherwise). Rosto animates the face; you bring the voice. Adding voice →

    rig.setState("idle")

    Now make it your face.

    That was a demo avatar. Yours is the same engine with your own face — or a wholly fictional one, if you would rather not upload a photo.

    One avatar is free to make. It then runs in any browser at no cost, forever — and you can download it and host it yourself.

    Looking for the motion instrument (A/B against the legacy engine, the frame-true page timeline)? That is an engineering tool, not a demo: /motion-lab.