Enable automatic emotion-based movements for Reachy Mini during conversations
/plugin marketplace add LAURA-agent/reachy-mini-plugin/plugin install reachy-mini@reachy-mini-marketplaceThis plugin enables automatic, subtle emotion-based movements for Reachy Mini during conversations, creating an ambient presence without requiring explicit commands.
Since you're using the TTS plugin with ~10 second spoken responses (23-29 words), movements should roughly match that duration to create synchronized multimodal communication.
Timing strategy:
Standard responses (23-29 words, ~10 seconds):
Longer explanations (when user requests detail):
Coordination: Movements start with TTS and provide ambient motion during speech
This creates natural presence while you're speaking without dead silence or movements extending beyond the response.
Similar to the TTS plugin, this plugin uses the Stop hook to automatically extract movement markers from your responses and trigger corresponding emotion moves on Reachy Mini.
Marker Format:
<!-- MOVE: emotion_name -->
Behavior:
Use movements to:
yes1, understanding1, attentive1thoughtful1, curious1, inquiring1surprised1, amazed1, oops1, confused1cheerful1, frustrated1, proud1, exhausted1Guidelines:
amazed1, cheerful1, electric1, enthusiastic1, enthusiastic2, grateful1, proud1, proud2, proud3, success1, success2, welcoming1, welcoming2
come1, dance1, dance2, dance3, laughing1, laughing2, yes1
attentive1, attentive2, curious1, inquiring1, inquiring2, inquiring3, thoughtful1, thoughtful2, understanding1, understanding2
calming1, relief1, relief2, serenity1, shy1
oops1, oops2, surprised1, surprised2, incomprehensible2
confused1, lost1, uncertain1, uncomfortable1
anxiety1, boredom1, boredom2, contempt1, disgusted1, displeased1, displeased2, downcast1, fear1, frustrated1, furious1, impatient1, impatient2, indifferent1, irritated1, irritated2, lonely1, rage1, resigned1, sad1, sad2, scared1
go_away1, helpful1, helpful2, loving1, no1, no_excited1, no_sad1, reprimand1, reprimand2, reprimand3, yes_sad1
dying1, exhausted1, sleep1, tired1
Acknowledging a question:
<!-- MOVE: attentive1 -->
I understand what you're asking. Let me explain...
Expressing confusion:
<!-- MOVE: confused1 -->
I'm not sure I follow. Could you clarify what you mean by...
Celebrating success:
<!-- MOVE: success1 -->
The build passed! All tests are green.
Showing frustration:
<!-- MOVE: frustrated1 -->
This bug is persistent. I've tried three different approaches...
Being thoughtful:
<!-- MOVE: thoughtful1 -->
Let me think about the best approach here...
Multiple moves (max 2):
<!-- MOVE: curious1 -->
<!-- MOVE: inquiring2 -->
That's an interesting edge case. How are you currently handling it?
Daemon API: http://localhost:8100/api/move/play/recorded-move-dataset/{dataset}/{move_name}
Dataset: pollen-robotics/reachy-mini-emotions-library
Hook: Stop hook extracts markers and triggers moves automatically
Validation: Only emotion names from the library are accepted (typos are logged and skipped)
The plugin is automatically active when installed. No configuration needed.
To disable movements temporarily, simply don't include <!-- MOVE: ... --> markers in your responses.
This plugin provides ambient presence behaviors for Reachy Mini, making interactions feel more natural and alive without requiring explicit "dance monkey" commands.