Skip to content

Add Reachy Mini OpenShell demo project - #1

Merged
johnnygreco merged 23 commits into
mainfrom
johnny/reachy-openshell
Jul 20, 2026
Merged

Add Reachy Mini OpenShell demo project#1
johnnygreco merged 23 commits into
mainfrom
johnny/reachy-openshell

Conversation

@johnnygreco

@johnnygreco johnnygreco commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a Reachy Mini conversation demo for OpenShell under projects/reachy-mini-openshell. The project provides a simulator-first local workflow, Gradio browser UI, Reachy movement tools, selectable model backends, and onboarding docs for running the app with minimal setup.

What This Adds

  • A reachy_mini_conversation_app package with reachy-mini-conversation-app and reachy-mini-backend-check commands.
  • A one-step local launcher, ./scripts/start-local.sh, that syncs dependencies, validates config, starts the Reachy Mini simulator daemon, and launches the browser app.
  • A single .env.example template copied to .env; credentials and model routing stay out of the browser UI.
  • Backend selection through BACKEND_PROVIDER:
    • openai_realtime for OpenAI Realtime speech, tool use, and speech output.
    • hf_realtime for the Pollen/Hugging Face realtime path.
    • local_stt for OpenAI-compatible STT -> Chat Completions + Reachy tools -> TTS.
  • Microphone and text input modes in the UI.
  • Reachy profile/tool support for motion, emotion playback, background tool status, and cancellation.
  • Local-STT microphone phrase detection, audio normalization, endpoint clients, and app-flow checks.
  • A fake OpenAI-compatible backend plus smoke script for local-STT validation without external STT/TTS services.
  • README and docs-site tutorial coverage for simulator setup, daemon status verification, app usage, backend selection, provider configuration, and troubleshooting.
  • Repo hygiene updates for Python/Rust/TypeScript-style generated files and secret/local env handling.

Local Demo Flow

cd projects/reachy-mini-openshell
cp .env.example .env
export OPENAI_API_KEY=sk-...
./scripts/start-local.sh

Open the printed Gradio URL, then choose Microphone for voice input or Text for typed prompts.

Validation

  • Panel review completed with no blocking runtime, docs, or hygiene findings.
  • uv run ruff check .
  • uv run ruff format --check .
  • uv run ty check
  • uv run pytest -q (165 passed)
  • env OPENAI_API_KEY=dummy uv run reachy-mini-backend-check --env-file .env.example
  • git diff --check

@johnnygreco
johnnygreco force-pushed the johnny/reachy-openshell branch from 11bfa3c to 90500da Compare June 24, 2026 17:35
@johnnygreco johnnygreco changed the title [codex] Add Reachy Mini OpenShell research scaffold Add Reachy Mini OpenShell research scaffold Jun 24, 2026
@johnnygreco johnnygreco changed the title Add Reachy Mini OpenShell research scaffold Refactor Reachy OpenShell around Reachy Mini conversation app Jun 24, 2026
@johnnygreco johnnygreco changed the title Refactor Reachy OpenShell around Reachy Mini conversation app Add Reachy Mini OpenShell demo project Jun 25, 2026

@johnnygreco johnnygreco left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Panel Review Update

Launched a three-pass panel review after pushing the final refactor:

  • Backend/runtime pass found a P1 Realtime tool-call race: the app requested a follow-up response before sending function_call_output. Fixed in 78193da by waiting until the tool result is sent before queueing the Realtime follow-up, with a regression test covering the no-pre-result-response behavior.
  • UX/docs and repo-hygiene passes found a P1 launcher readiness issue: scripts/start-local.sh treated any HTTP-ish daemon status as healthy. Fixed in 78193da by requiring /api/daemon/status JSON with type == "daemon_status" and state == "running".
  • Docs pass also noted the local-STT app-flow/--real-reachy validation wording could confuse Realtime users. Fixed in 78193da by scoping that section explicitly to BACKEND_PROVIDER=local_stt.

Remaining note: pyproject.toml intentionally keeps uv lock resolution scoped to Darwin for the local Reachy/MuJoCo demo workflow. This is documented, but Linux CI would need its own lock/platform handling before treating this project as a normal cross-platform CI target.

Validation after fixes:

  • uv run ruff format .
  • uv run ruff check .
  • uv run ty check
  • uv lock --check
  • uv run pytest -q (166 passed)
  • git diff --check
  • uv run python -m reachy_mini_conversation_app --help
  • reachy-mini-backend-check dry-run validation for OpenAI Realtime, HF Realtime, and local-STT example env files
  • uv run reachy-mini-backend-check --env-file .env.openai-realtime.example --live
  • scripts/smoke-local-stt.sh

@johnnygreco
johnnygreco marked this pull request as ready for review June 26, 2026 20:19
@johnnygreco
johnnygreco force-pushed the johnny/reachy-openshell branch from 28aa9ce to 15a93ef Compare July 7, 2026 16:05
@johnnygreco
johnnygreco force-pushed the johnny/reachy-openshell branch from 15a93ef to 9122d6f Compare July 7, 2026 16:12
@johnnygreco
johnnygreco merged commit 135a4f2 into main Jul 20, 2026
4 checks passed
@johnnygreco
johnnygreco deleted the johnny/reachy-openshell branch July 20, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant