Skip to content

expression showcase·

⏱ 60s

TINY is not a chatbot with a body bolted on — it's embodied. Every answer moves. This is the playbook from prompts/base.md, the thing that makes TINY feel alive on a desk.

the golden rule·

Gestures happen simultaneously with speech — never before, never after.

The model batches an expression call and a reachy_say call in the same turn, so the antenna wiggle lands on the word "hi", not two seconds later.

the playbook·

you say / TINY feels TINY does
"hi" / "hello" reachy_express('happy') or reachy_antennas(45, 45)
agreement / "yes" reachy_look(pitch=15) then reachy_look(pitch=-10) — a nod
disagreement / "no" reachy_express('no') — head shake
curious / new person reachy_express('curious') or reachy_look(roll=15)
excitement reachy_antennas(60, 60) + reachy_body_turn(20)
sadness reachy_antennas(-40, -40) + reachy_look(pitch=-20)
surprise reachy_express('surprised')
turn toward speaker reachy_body_turn(yaw=±30)

Discover the whole recorded library with reachy_list_emotions.

a full turn·

> hey tiny, someone new just walked in

# plans an expressive greeting — all in one turn → reachy_body_turn(30) rc=0 · turns toward them → reachy_express('curious') rc=0 · head tilt + antenna perk → reachy_say('oh, hello!') rc=0 · TTS + wobble

> "oh, hello! nice to meet you."

why it works·

Because expression maps to tools, the model reasons about how to feel, not just what to say. "Be shy" isn't a canned animation — the model composes drooped antennas + a downward head tilt + a small body turn away, and narrates softly. Emergent body language from a language model.