Spaces:
Running
Running
Reachy Eleven Agent Plan
Goal
Build a Python Reachy Mini app that uses ElevenLabs ElevenAgents for live voice interaction. The first target is a Wireless Reachy Mini using the system default microphone and speaker.
Technical Approach
- Use the Reachy conversation app template generated by
reachy-mini-app-assistant. - Use
uv sync --devas the default environment workflow and keepuv.lockcommitted for repeatable installs. - Make ElevenLabs the default provider via
REACHY_AGENT_PROVIDER=elevenlabs. - Connect to a public ElevenLabs agent with
ELEVENLABS_AGENT_ID; useELEVENLABS_API_KEYonly if the agent is private. - Run the ElevenLabs Python SDK with default system audio and a tapped output stream that feeds Reachy's speech-motion
HeadWobbler. - Register client tools for gestures:
reachy_move_head,reachy_set_antennas,reachy_set_body_yaw,reachy_expression,reachy_sleep, andreachy_wake. - Keep robot motion on the existing
MovementManagerqueue so tool calls do not directly fight the control loop.
Answers Locked In
- App flavor: Python app.
- Robot type: Wireless.
- ElevenLabs auth: public agent ID.
- Audio routing: system default input/output.
- v1 scope: voice plus robot speech motion and simple client-tool gestures.
Notes
- Publishing failed locally because the current Hugging Face token cannot create Spaces under
btuttle; implementation continues locally. - Live audio needs PyAudio/PortAudio on the target machine. If PyAudio is missing, install system PortAudio headers and then run
uv sync --dev --extra audio. - May 16 reconnect fix: if the Reachy Mini daemon websocket drops during ElevenLabs mode, keep the voice loop alive, reconnect the SDK client in the background, and resume the movement manager with the new client instead of stopping the app.
- May 16 version alignment: pin
reachy-mini[wireless-version]==1.7.1because the robot daemon reports version 1.7.1; run both daemon and app through this repo'suv runenvironment. - May 16 catalog readiness: dashboard launches now expose a Gradio settings/control UI for ElevenLabs agent ID, optional API key/user ID, and start/stop/restart controls.
- May 16 dashboard route fix: remove the template static
GET /route before mounting Gradio so startup shows the ElevenLabs controls, not the unused OpenAI key page. - May 16 dashboard queue fix: dashboard callbacks use direct Gradio HTTP execution (
queue=False) because the Reachy Control app shell can leave queued events spinning indefinitely.