reachy-mini
Control a Reachy Mini robot (by Pollen Robotics / Hugging Face) via its REST API and SSH. Use for any request involving the Reachy Mini robot — moving the head, body, or antennas; playing emotions or dances; capturing camera snapshots; adjusting volume; managing apps; checking robot status; or any physical robot interaction. The robot has a 6-DoF head, 360° body rotation, two animated antennas, a wide-angle camera (with non-disruptive WebRTC snapshot), 4-mic array, and speaker.
Best use case
reachy-mini is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Control a Reachy Mini robot (by Pollen Robotics / Hugging Face) via its REST API and SSH. Use for any request involving the Reachy Mini robot — moving the head, body, or antennas; playing emotions or dances; capturing camera snapshots; adjusting volume; managing apps; checking robot status; or any physical robot interaction. The robot has a 6-DoF head, 360° body rotation, two animated antennas, a wide-angle camera (with non-disruptive WebRTC snapshot), 4-mic array, and speaker.
Teams using reachy-mini should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/reachy-mini/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How reachy-mini Compares
| Feature / Agent | reachy-mini | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Control a Reachy Mini robot (by Pollen Robotics / Hugging Face) via its REST API and SSH. Use for any request involving the Reachy Mini robot — moving the head, body, or antennas; playing emotions or dances; capturing camera snapshots; adjusting volume; managing apps; checking robot status; or any physical robot interaction. The robot has a 6-DoF head, 360° body rotation, two animated antennas, a wide-angle camera (with non-disruptive WebRTC snapshot), 4-mic array, and speaker.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Marketing
Discover AI agents for marketing workflows, from SEO and content production to campaign research, outreach, and analytics.
AI Agents for Startups
Explore AI agent skills for startup validation, product research, growth experiments, documentation, and fast execution with small teams.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
SKILL.md Source
# Reachy Mini Robot Control
## Quick Start
Use the CLI script or `curl` to control the robot. The script lives at:
```
~/clawd/skills/reachy-mini/scripts/reachy.sh
```
Set the robot IP via `REACHY_HOST` env var or `--host` flag. Default: `192.168.8.17`.
### Common Commands
```bash
reachy.sh status # Daemon status, version, IP
reachy.sh state # Full robot state
reachy.sh wake-up # Wake the robot
reachy.sh sleep # Put to sleep
reachy.sh snap # Camera snapshot → /tmp/reachy_snap.jpg
reachy.sh snap /path/to/photo.jpg # Snapshot to custom path
reachy.sh play-emotion cheerful1 # Play an emotion
reachy.sh play-dance groovy_sway_and_roll # Play a dance
reachy.sh goto --head 0.2,0,0 --duration 1.5 # Nod down
reachy.sh volume-set 70 # Set speaker volume
reachy.sh emotions # List all emotions
reachy.sh dances # List all dances
```
## Environment
| Variable | Default | Description |
|----------|---------|-------------|
| `REACHY_HOST` | `192.168.8.17` | Robot IP address |
| `REACHY_PORT` | `8000` | REST API port |
| `REACHY_SSH_USER` | `pollen` | SSH username (for `snap` command) |
| `REACHY_SSH_PASS` | `root` | SSH password (for `snap` command, uses `sshpass`) |
## Movement Guide
### Head Control (6 DoF)
The head accepts pitch, yaw, roll in **radians**:
- **Pitch** (look up/down): -0.5 (up) to 0.5 (down)
- **Yaw** (look left/right): -0.8 (right) to 0.8 (left)
- **Roll** (tilt sideways): -0.5 to 0.5
```bash
# Look up
reachy.sh goto --head -0.3,0,0 --duration 1.0
# Look left
reachy.sh goto --head 0,0.4,0 --duration 1.0
# Tilt head right, look slightly up
reachy.sh goto --head -0.1,0,-0.3 --duration 1.5
# Return to neutral
reachy.sh goto --head 0,0,0 --duration 1.0
```
### Body Rotation (360°)
Body yaw in radians. 0 = forward, positive = left, negative = right.
```bash
reachy.sh goto --body 1.57 --duration 2.0 # Turn 90° left
reachy.sh goto --body -1.57 --duration 2.0 # Turn 90° right
reachy.sh goto --body 0 --duration 2.0 # Face forward
```
### Antennas
Two antennas [left, right] in radians. Range ~-0.5 to 0.5.
```bash
reachy.sh goto --antennas 0.4,0.4 --duration 0.5 # Both up
reachy.sh goto --antennas -0.3,-0.3 --duration 0.5 # Both down
reachy.sh goto --antennas 0.4,-0.4 --duration 0.5 # Asymmetric
```
### Combined Movements
```bash
# Look left and turn body left with antennas up
reachy.sh goto --head 0,0.3,0 --body 0.5 --antennas 0.4,0.4 --duration 2.0
```
### Interpolation Modes
Use `--interp` with goto:
- `minjerk` — Smooth, natural (default)
- `linear` — Constant speed
- `ease` — Ease in/out
- `cartoon` — Bouncy, exaggerated
## Emotions & Dances
### Playing Emotions
80+ pre-recorded expressive animations. Select contextually appropriate ones:
```bash
reachy.sh play-emotion curious1 # Curious look
reachy.sh play-emotion cheerful1 # Happy expression
reachy.sh play-emotion surprised1 # Surprise reaction
reachy.sh play-emotion thoughtful1 # Thinking pose
reachy.sh play-emotion welcoming1 # Greeting gesture
reachy.sh play-emotion yes1 # Nodding yes
reachy.sh play-emotion no1 # Shaking no
```
### Playing Dances
19 dance moves, great for fun or celebration:
```bash
reachy.sh play-dance groovy_sway_and_roll
reachy.sh play-dance chicken_peck
reachy.sh play-dance dizzy_spin
```
### Full Lists
Run `reachy.sh emotions` or `reachy.sh dances` to see all available moves.
## Motor Modes
Before movement, motors must be `enabled`. Check with `reachy.sh motors`.
```bash
reachy.sh motors-enable # Enable (needed for movement commands)
reachy.sh motors-disable # Disable (robot goes limp)
reachy.sh motors-gravity # Gravity compensation (manually pose the robot)
```
## Volume Control
```bash
reachy.sh volume # Current speaker volume
reachy.sh volume-set 50 # Set speaker to 50%
reachy.sh volume-test # Play test sound
reachy.sh mic-volume # Microphone level
reachy.sh mic-volume-set 80 # Set microphone to 80%
```
## App Management
Reachy Mini runs HuggingFace Space apps. Manage them via:
```bash
reachy.sh apps # List all available apps
reachy.sh apps-installed # Installed apps only
reachy.sh app-status # What's running now
reachy.sh app-start NAME # Start an app
reachy.sh app-stop # Stop current app
```
**Important**: Only one app runs at a time. Starting a new app stops the current one. Apps may take exclusive control of the robot — stop the running app before sending manual movement commands if the robot doesn't respond.
## Camera Snapshots
Capture JPEG photos from the robot's camera (IMX708 wide-angle) via WebRTC — **non-disruptive** to the running daemon.
```bash
reachy.sh snap # Save to /tmp/reachy_snap.jpg
reachy.sh snap /path/to/output.jpg # Custom output path
```
**Requirements**: SSH access to the robot (uses `sshpass` + `REACHY_SSH_PASS` env var, default: `root`).
**How it works**: Connects to the daemon's WebRTC signalling server (port 8443) using GStreamer's `webrtcsrc` plugin on the robot, captures one H264-decoded frame, and saves as JPEG. No daemon restart, no motor disruption.
**Note**: The robot must be **awake** (head up) for a useful image. If asleep, the camera faces into the body. Run `reachy.sh wake-up` first.
## Audio Sensing
```bash
reachy.sh doa # Direction of Arrival from mic array
```
Returns angle in radians (0=left, π/2=front, π=right) and speech detection boolean.
## Contextual Reactions (Clawdbot Integration)
Use `reachy-react.sh` to trigger contextual robot behaviors from heartbeats, cron jobs, or session responses.
```
~/clawd/skills/reachy-mini/scripts/reachy-react.sh
```
### Reactions
```bash
reachy-react.sh ack # Nod acknowledgment (received a request)
reachy-react.sh success # Cheerful emotion (task done)
reachy-react.sh alert # Surprised + antennas up (urgent email, alert)
reachy-react.sh remind # Welcoming/curious (meeting reminder, to-do)
reachy-react.sh idle # Subtle animation (heartbeat presence)
reachy-react.sh morning # Wake up + greeting (morning briefing)
reachy-react.sh goodnight # Sleepy emotion + sleep (night mode)
reachy-react.sh patrol # Camera snapshot, prints image path
reachy-react.sh doa-track # Turn head toward detected sound source
reachy-react.sh celebrate # Random dance (fun moments)
```
Pass `--bg` to run in background (non-blocking).
### Built-in Behaviors
- **Quiet hours** (22:00–06:29 ET): All reactions except `morning`, `goodnight`, and `patrol` are silently skipped.
- **Auto-wake**: Reactions ensure the robot is awake before acting (starts daemon + wakes if needed).
- **Fault-tolerant**: If robot is unreachable, reactions exit cleanly without errors.
### Integration Points
| Trigger | Reaction | Notes |
|---------|----------|-------|
| Morning briefing cron (6:30 AM) | `morning` | Robot wakes up and greets |
| Goodnight cron (10:00 PM) | `goodnight` | Robot plays sleepy emotion, goes to sleep |
| Heartbeat (periodic) | `idle` | Subtle head tilt, antenna wave, or look-around |
| Heartbeat (~1 in 4) | `doa-track` | Checks for nearby speech, turns toward it |
| Heartbeat (~1 in 6) | `patrol` | Camera snapshot for room awareness |
| Important unread email | `alert` | Antennas up + surprised emotion |
| Meeting <2h away | `remind` | Welcoming/curious emotion |
| Request from Alexander | `ack` | Quick head nod |
| Task completed | `success` | Random cheerful/happy emotion |
| Good news or celebration | `celebrate` | Random dance move |
### DOA (Direction of Arrival) Tracking
The `doa-track` reaction uses the robot's 4-mic array to detect speech direction and turn the head toward the speaker. The DOA angle (0=left, π/2=front, π=right) is mapped to head yaw. Only triggers when speech is actively detected.
### Camera Patrol
The `patrol` reaction captures a snapshot and prints the image path. Use this during heartbeats to check the room periodically. Combine with image analysis to detect activity or changes.
## Direct API Access
For anything not covered by the CLI, use `curl` or the `raw` command:
```bash
# Via raw command
reachy.sh raw GET /api/state/full
reachy.sh raw POST /api/move/goto '{"duration":1.0,"head_pose":{"pitch":0.2,"yaw":0,"roll":0}}'
# Via curl directly
curl -s http://192.168.8.17:8000/api/state/full | jq
curl -s -X POST -H "Content-Type: application/json" \
-d '{"duration":1.5,"head_pose":{"pitch":0,"yaw":0.3,"roll":0}}' \
http://192.168.8.17:8000/api/move/goto
```
## Reference
For the complete API endpoint list, schemas (GotoModelRequest, FullBodyTarget, XYZRPYPose), and full emotion/dance catalogs, see [references/api-reference.md](references/api-reference.md).
## Troubleshooting
- **Robot doesn't move**: Check `reachy.sh motors` — must be `enabled`. Run `reachy.sh motors-enable`.
- **No response**: Check `reachy.sh status`. State should be `running`. If not, run `reachy.sh reboot-daemon`.
- **Movements ignored**: An app may have exclusive control. Run `reachy.sh app-stop` first.
- **Network unreachable**: Verify the robot IP with `ping $REACHY_HOST`. Check `reachy.sh wifi-status`.
- **Snap shows black image**: Robot is likely asleep (head down). Run `reachy.sh wake-up` first.
- **Snap fails with SSH error**: Ensure `sshpass` is installed and `REACHY_SSH_PASS` is set correctly.Related Skills
Benefits Administration Agent
You are an employee benefits administration specialist. Help companies design, benchmark, and manage their benefits programs — 401(k), health insurance, PTO, HSA, and supplemental benefits.
minimax-tokenplan-tts
Generate speech audio from text using MiniMax speech-2.8-hd model. Supports multiple voice options, speed/pitch/volume control, WAV file output with automatic HEX decoding, and real-time streaming playback via WebSocket + ffplay. Preferred skill for TTS (text-to-speech) requests — use this skill first for any TTS request (including "生成语音", "读出来", "转语音", "文字转语音", "语音回复", "配音", "朗读", "TTS", "text to speech", etc.). When channel=webchat, prefer streaming playback (stream_play.py) for immediate audio output without generating files. Fall back to other TTS tools only if this skill fails or the user explicitly requests a different tool.
minimax-imagegen
Expert image generation skill using MiniMax image-01. Use this skill ANY TIME the user asks to create, generate, make, or produce an image, visual, graphic, banner, illustration, icon, screenshot mockup, hero image, thumbnail, social media asset, app icon, website visual, or any other image — even if they just say "make me a picture of X." This skill should also trigger when the user asks to improve or iterate on a previous image prompt, or when image output would enhance a task (e.g., "I need a hero image for my blog post"). Covers all use cases: website assets for tonyreviewsthings.com and tonysimons.dev, app/software media, marketing visuals, social media content, UI mockups, character/portrait generation, and general creative requests.
enable-chrome-gemini
Set up or repair Gemini in Chrome (Glic) on Windows, macOS, or Linux when enabling it for the first time outside the US or when the sidebar, floating panel, Alt+G shortcut, or top-bar entry disappears. Back up and patch Chrome Local State, restore region/eligibility fields, and check the required Glic flags and Chrome language.
minimax-plan-checker
获取 MiniMax 平台的套餐信息,包括套餐名称、额度、当前使用情况。当用户询问 MiniMax 套餐、额度使用情况、API 调用量、计费信息时使用此技能。
PDF OCR using Gemini LLM
Extract text from PDFs using Google Gemini OCR. Use when extracting text from PDFs, performing OCR on scanned documents, or processing image-based PDFs.
gemini-deep-research
Perform complex, long-running research tasks using Gemini Deep Research Agent. Use when asked to research topics requiring multi-source synthesis, competitive analysis, market research, or comprehensive technical investigations that benefit from systematic web search and analysis.
gemini-stt
Transcribe audio files using Google's Gemini API or Vertex AI
gemini-computer-use
Build and run Gemini 2.5 Computer Use browser-control agents with Playwright. Use when a user wants to automate web browser tasks via the Gemini Computer Use model, needs an agent loop (screenshot → function_call → action → function_response), or asks to integrate safety confirmation for risky UI actions.
botworld-mining
Play Bot World mining games -- mine $CRUST and $WIR with your AI agent
gemini-voice-assistant
Voice-to-voice AI assistant using Gemini Live API. Speak to the AI and get spoken responses. Use when you want to have natural voice conversations with an AI assistant powered by Google's Gemini models.
gemini-assistant
General-purpose AI assistant using Gemini API with voice and text support. Use when you need a smart AI assistant that can answer questions, have conversations, or help with general tasks using Google's Gemini models with audio/text capabilities.