CoolFace
Apppublic

AgenticBeingsInc/reachy-aivah

sourceHugging Faceupdated 2mo agoView on Hugging Face
1likes
App README

Reachy Mini Controller (React + Vite + LiveKit)

Control your Reachy Mini directly from the browser with live camera, precise manual pose controls, and natural voice conversation powered by LiveKit Agents.

  • —Uses the official @pollen-robotics/reachy-mini-sdk@1.8.0 + host shell (OAuth + robot picker)
  • —Live video + atomic head/antenna/body commands via WebRTC data channel
  • —LiveKit voice AI panel: talk to an agent that can intelligently drive the robot
  • —Works as a static Hugging Face Space (sdk: static)

Quick start (local)

bash
npm install
cp .env.local.example .env.local   # add your HF token + username
npm run dev

Open http://localhost:3000 — with VITE_HF_TOKEN set you skip OAuth and go straight to the robot picker.

Do not put `VITE_HF_TOKEN` on HF Space — production uses per-user OAuth (hf_oauth: true).

Reachy auth (dev)

  1. 1.Get a token: https://huggingface.co/settings/tokens (read scope is enough)
  2. 2.Add to .env.local:
env
VITE_HF_TOKEN=hf_...
VITE_HF_USERNAME=yourname

The host shell will sign you in automatically.

Testing with local simulation (no physical robot)

Local simulation (reachy-mini-daemon --sim) runs a MuJoCo robot but does not appear in the official host shell robot picker (the "No Reachy online" screen), because discovery goes through Hugging Face's central signaling server.

Fastest way to test the controller UI:

Visit:

http://localhost:5173/?demo=1

This bypasses the host shell and loads your actual control panel + LiveKit voice UI with a mock reachy.

  • —Sliders and presets log to the browser console.
  • —No real video (simulation has none) — you'll see a placeholder.
  • —You can still run the LiveKit voice agent and have it drive the real simulation via the Python SDK in another terminal.

Run simulation in parallel:

bash
reachy-mini-daemon --sim --scene minimal
# or on macOS:
mjpython -m reachy_mini.daemon.app.main --sim

Then use your normal Python scripts or the official Control app to verify motion while you develop the web UI.

LiveKit voice AI (dev)

  1. 1.Create a free project at https://cloud.livekit.io/
  2. 2.In project Settings, enable the sandbox token server and copy the ID.
  3. 3.Add to .env.local:
env
VITE_LK_SANDBOX_ID=your-sandbox-id
  1. 1.Run a LiveKit Agent (Python recommended) that has tools using the Reachy Python SDK.

Speak commands like "nod your head", "look left", "do a little dance".

Project structure (must follow contract)

  • —index.html – exact theme + HF OAuth bootstrap
  • —src/dispatch.ts – loads SDK on window + chooses host vs embed
  • —src/embed.tsx – your app (receives fully connected reachy)
  • —public/icon.svg – used for top bar + catalog + favicon

See the official APP_CREATION_GUIDE.

Deploy to HF Spaces

Full guide: [DEPLOY.md](./DEPLOY.md)

Quick path:

bash
# Pre-built deploy (local build → upload dist to Space root)
chmod +x scripts/deploy-hf-prebuilt.sh
HF_TOKEN=hf_... npm run deploy:hf

# 2. Space Settings → Repository secrets (see DEPLOY.md)
# 3. GCP chatbot-api: AGENT_NAME=reachy-agent, CORS allows *.hf.space
# 4. Robot owner runs: reachy-mini-daemon

The README frontmatter (sdk: docker, app_port: 7860, hf_oauth: true) serves the pre-built bundle via nginx. No app_build_command — avoids static SDK config errors on org Spaces.

Physical Reachy Mini

  1. 1.Connect robot (Lite USB or Wireless WiFi)
  2. 2.Run reachy-mini-daemon on the robot owner's machine
  3. 3.Open the Space URL → HF login → select the online robot from the picker

Simulation (reachy-mini-daemon --sim) does not appear in the robot picker — use ?demo=1 for local UI testing only.

Controls

Reachy panel

  • —Live video (attachVideo)
  • —Head RPY / antennas / body yaw sliders + presets
  • —Mutes + live state

LiveKit AI panel

  • —Mic on → speak to agent
  • —Agent can move robot while you watch

Manual controls always available.

Notes

  • —enableMicrophone: false on Reachy host (LiveKit owns the mic)
  • —Animation helper not in published package exports – simple reset used on leave
  • —Big bundles are normal (host + sdk)

References

  • —Reachy JS SDK + guide
  • —LiveKit React voice AI quickstart (MCP)