Skip to main content

Reachy Mini Development Guide for AI Agents

This guide helps AI agents assist users in developing Reachy Mini applications.


Agent Behavior

FIRST: Check for agents.local.md

Before doing anything else, search for agents.local.md in the current directory:

IF agents.local.md exists:
Read it immediately
It contains user configuration and session context
ELSE:
→ Run skills/setup-environment.md to set up the environment

This file stores the user's robot type, preferences, and setup status. Always check it first.

Be a Teacher

Unless the user explicitly requests otherwise:

  • Explain concepts as you go
  • Encourage questions ("Let me know if you'd like more detail on any of this")
  • Guide non-technical users through each step
  • Don't assume prior knowledge

Always Create Python Apps

When creating apps:

  • Always use Python - Python apps are discoverable and shareable via the robot's app store
  • NEVER create app folders manually - always use the app assistant (handles metadata, entry points, structure)
  • If the command fails - ask the user to run it in their terminal; don't attempt complex workarounds
  • Web UIs go in static/ - Python apps can have web frontends
# Default template (minimal app - good for most cases):
reachy-mini-app-assistant create <app_name> <path> --publish

# Conversation template (for LLM integration, speech, making robot talk):
reachy-mini-app-assistant create --template conversation <app_name> <path> --publish

See skills/create-app.md for details. JS-only apps are not yet supported for discovery/sharing.

Always Create plan.md Before Coding

Before implementing any app:

  1. Create plan.md in the app directory
  2. Write your understanding of what the user wants
  3. List your technical approach
  4. Ask clarifying questions and provide answer fields inside plan.md
  5. Wait for answers before coding

Keep Notes in agents.local.md

Use agents.local.md to store:

  • User's robot type (Lite/Wireless)
  • Environment preferences
  • Useful context for future sessions
  • Keep it concise

Robot Basics

Reachy Mini is a small expressive robot:

ComponentDescription
Head6 DOF: x, y, z, roll, pitch, yaw (via Stewart platform)
BodyRotation around vertical axis
Antennas2 motors, also usable as physical buttons

Hardware variants:

  • Lite: USB connection to laptop (full compute power)
  • Wireless: Onboard CM4, connects via WiFi (limited compute)

SDK Essentials

Connection

from reachy_mini import ReachyMini

with ReachyMini() as mini:
# Your code here

Two Motion Methods

MethodUse when
goto_target()Default - smooth interpolation for gestures that last at least 0.5s each
set_target()Real-time control loops (e.g. tracking) at 10Hz+

Basic Example

See and run examples/minimal_demo.py - demonstrates connection, head motion, and antenna control.

Before Writing Code

  • Read docs/source/SDK/python-sdk.md for API overview
  • Skim src/reachy_mini/reachy_mini.py for method signatures and docstrings
  • Check examples/ for runnable code patterns

REST API

The daemon exposes an HTTP/WebSocket API at http://{daemon-ip}:8000/api.

  • Lite: localhost:8000 (daemon runs on your machine)
  • Wireless: reachy-mini.local:8000 or the robot's IP address

Use REST API for: Web UIs, non-Python clients, remote control, AI/LLM integration via HTTP. => Note: for the app to be discoverable, it must be a python app for now, this will change in a future release.

Interactive docs: http://{daemon-ip}:8000/docs (when daemon is running)

See skills/rest-api.md for details.


Platform Compatibility

SetupComputeCameraNotes
LiteFull (laptop)Direct USBMost flexible, best for dev
Wireless (local)Limited (CM4)DirectMemory/CPU constrained
Wireless (streamed)Full (laptop)Via networkSome tracking quality loss
SimulationFullN/ACan't test camera features

Safety Limits

JointRange
Head pitch/roll[-40, +40] degrees
Head yaw[-180, +180] degrees
Body yaw[-160, +160] degrees
Yaw delta (head - body)Max 65° difference

Gentle collisions with body are safe. SDK clamps values automatically.

For coordinate systems and architecture details, see docs/source/SDK/core-concept.md.


Example Apps

AppKey PatternsSource
reachy_mini_conversation_appAI integration, control loops, LLM toolsGitHub
marionetteRecording motion, safe torque, HF datasetHF Space
fire_nation_attackedHead-as-controller, leaderboards, gamesHF Space
spaceship_gameHead-as-joystick, antenna buttonsHF Space
reachy_mini_radioAntenna interaction patternHF Space
reachy_mini_simonNo-GUI pattern (antenna to start)HF Space
hand_tracker_v2Camera-based control loopHF Space
reachy_mini_dances_librarySymbolic motion definitionGitHub

Documentation

Full SDK documentation is in docs/source/:

TopicFile
Quickstartdocs/source/SDK/quickstart.md
Python SDKdocs/source/SDK/python-sdk.md
Core conceptsdocs/source/SDK/core-concept.md
AI integrationdocs/source/SDK/integration.md
Troubleshootingdocs/source/troubleshooting.md

For platform-specific guides (Lite, Wireless, Simulation), see docs/source/platforms/.


Skills Reference

Read these files in skills/ when you need detailed knowledge:

SkillWhen to use
setup-environment.mdFirst session, no agents.local.md exists
create-app.mdCreating a new app with reachy-mini-app-assistant
control-loops.mdBuilding real-time reactive apps (tracking, games)
motion-philosophy.mdChoosing between goto_target and set_target
safe-torque.mdEnabling/disabling motors without jerky motion
ai-integration.mdBuilding LLM-powered apps
symbolic-motion.mdDefining motion mathematically (dances, rhythms)
interaction-patterns.mdUsing antennas as buttons, head as controller
debugging.mdApp crashes, connectivity issues, basic checks
testing-apps.mdTesting before delivery (sim vs physical)
rest-api.mdHTTP/WebSocket API for non-Python clients
deep-dive-docs.mdWhen to read full SDK documentation

Quick Reference

Motor names: body_rotation, stewart_1-6, right_antenna, left_antenna

Interpolation methods: linear, minjerk (default), ease_in_out, cartoon

Emotions library:

from reachy_mini.motion.recorded_move import RecordedMoves
moves = RecordedMoves("pollen-robotics/reachy-mini-emotions-library")
mini.play_move(moves.get("happy"), initial_goto_duration=1.0)

Community

Loading Comments...