Designed Reachy Mini app with button interface and fallback.
PlanImplemented app, verified Python code, and created README.
BuildGuided user to test app locally on Reachy Mini.
PlanExplained publishing process to Hugging Face Spaces.
PlanPrepared app for publishing and pushed to HF Space.
Build# Python 3.10–3.12 requiredpython3.12 -m venv ~/reachy_mini_envsource ~/reachy_mini_env/bin/activatepip install reachy-minireachy-mini-daemon # starts the daemon (Lite, USB)# or for Wireless: it runs on the robot itself; just check reachy-mini.local:8000 respondsfrom reachy_mini import ReachyMiniwith ReachyMini() as mini: print(mini.get_current_joint_positions())cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"pip install -e .python -m good_morning_app.main# the app is already registered via the entry point in pyproject.toml,# so the dashboard / launcher will pick it up automatically.# Open the Reachy Mini dashboard and click "Good Morning".pip install pyttsx3 soundfile scipy numpypython -c "from good_morning_app.main import _synthesize_phrase, _load_phrase_for_robotfrom pathlib import Path_synthesize_phrase('Good morning!', Path('test.wav'))print(_load_phrase_for_robot(Path('test.wav')).shape)"# 1. Check what Python you havepython3 --version# 2. Make a venv and activate itpython3 -m venv .venvsource .venv/bin/activate
# 3. Now `pip` exists inside the venv. Install the app + the SDK.pip install --upgrade pippip install -e .
# 4. Run itpython -m good_morning_app.mainpython3 -m pip install --user -e .python3 -m good_morning_app.main# 1. Install uv (modern Python installer/runner)brew install uv # or: curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Make a Python 3.12 envcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"uv venv --python 3.12source .venv/bin/activate
# 3. Install the SDK + the app-assistant CLIuv pip install reachy-mini reachy-mini-app-assistant huggingface_hub
# 4. Log in to Hugging Face (creates the Space under your account)hf auth login # paste a token from https://huggingface.co/settings/tokens (write scope)
# 5. Validate our app's structure first (catches missing frontmatter, bad entry points, etc.)reachy-mini-app-assistant check .
# 6. Push it as a Space — this creates huggingface.co/spaces/clementdelangue/good-morning# and the Reachy Mini dashboard will pick it up.reachy-mini-app-assistant publish .reachy-mini-app-assistant create good_morning ../tmp_good_morning --publish# then copy our src/good_morning_app/main.py, index.html, style.css over the scaffold and `git push`# 1. Create an empty Space on the web:# https://huggingface.co/new-space → SDK = "Static" → name "good-morning"
# 2. From inside the app folder:cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/.../reachy-mini-good-morning"git initgit add .git commit -m "Initial commit"
# 3. Push to the Space (replace clementdelangue with your HF username if different)git remote add origin https://huggingface.co/spaces/clementdelangue/good-morninggit push -u origin mainuv pip install huggingface_hubhf auth loginhuggingface-cli login# you should still be in reachy-mini-good-morning/git init -b maingit add .git commit -m "Initial commit: Good Morning Reachy Mini app"
# Embed the token in the remote URL so git won't prompt — replace hf_xxx with your tokengit remote add origin https://clementdelangue:[REDACTED]/spaces/clementdelangue/good-morninggit push -u origin mainpython -c "from huggingface_hub import create_repo; print(create_repo('good-morning', repo_type='space', space_sdk='static').url)"cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
source .venv/bin/activate # in case the shell is fresh
git init -b maingit add .git commit -m "Initial commit: Good Morning Reachy Mini app"git remote add origin https://huggingface.co/spaces/clementdelangue/good-morninggit push -u origin maingit remote set-url origin https://clementdelangue:[REDACTED]/spaces/clementdelangue/good-morninggit push -u origin main# then strip the token back out:git remote set-url origin https://huggingface.co/spaces/clementdelangue/good-morningpython3 -c "from huggingface_hub import create_repo; print(create_repo('good-morning', repo_type='space', space_sdk='static').url)"python3 -m pip install --user --break-system-packages huggingface_hubpython3 -c "from huggingface_hub import create_repo; print(create_repo('good-morning', repo_type='space', space_sdk='static').url)"cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"source .venv/bin/activatepython -c "from huggingface_hub import create_repo; print(create_repo('good-morning', repo_type='space', space_sdk='static').url)"cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git init -b maingit add .git commit -m "Initial commit: Good Morning Reachy Mini app"git remote add origin https://huggingface.co/spaces/clem/good-morninggit push -u origin maingit remote set-url origin https://clem:[REDACTED]/spaces/clem/good-morninggit push -u origin main# then clean it back out so the token isn't sitting in .git/config:git remote set-url origin https://huggingface.co/spaces/clem/good-morninggit push -u origin main --force"id": "clem/good-morning","tags": ["static","reachy_mini","reachy_mini_python_app","region:us"],"sdk": "static"cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add index.htmlgit commit -m "Open external links in new tab; fix CTA destination"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add index.html style.cssgit commit -m "Add preview button + clear install/use instructions on landing page"git pushhttp://localhost:7860/http://reachy-mini.local:7860/[good_morning] Good Morning app starting (web on :7860, antennas armed)[good_morning] INFO: Good Morning app starting (web on :7860, antennas armed)[good_morning] INFO: Triggered by web[good_morning] INFO: Saying 'Good morning!' (0.73s)cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add src/good_morning_app/main.pygit commit -m "Auto-open the button page in the user's browser on app start"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add README.md index.html style.css src/good_morning_app/main.pygit commit -m "New phrase, Clem credit, drop antenna mentions, document localhost:7860"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add README.mdgit commit --amend --no-editgit pushgit config --global user.name "Clem Delangue"git config --global user.email "[REDACTED]"cd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add src/good_morning_app/main.py index.html README.mdgit commit -m "Update phrase: drop name, add open-source line"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add index.htmlgit commit -m "Trim quote from landing page lede"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add README.md index.html style.cssgit commit -m "Switch icon to sun ☀️"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add src/good_morning_app/main.pygit commit -m "Animate head, antennas, body sway while speaking"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add index.html style.cssgit commit -m "Add 'Try in simulation' section to landing page"git pushcd "/Users/clem/Library/Application Support/Claude/local-agent-mode-sessions/60820195-31c6-4093-8c9e-37c09903f4a5/6e545699-813d-4c34-a80c-8667623c108d/local_8906e6df-1974-4b95-a48d-96cc2a2d91db/outputs/reachy-mini-good-morning"
git add index.htmlgit commit -m "Simplify simulation section: just install the desktop app"git push