PanGalactic Claude Opus 4.6 commited on
Commit
28ffbae
·
1 Parent(s): f671471

Fix demo: use latest reachy-mini, skip media in DEMO_MODE

Browse files

- Switch back to latest reachy-mini (1.3.1) — the Zenoh pub_status
error was a race condition from double-starting the daemon, not a
version bug. The startup script already avoids double-start.
- Add DEMO_MODE env var to Dockerfile + app.py check: when set,
request_media_backend="no_media" skips camera/audio init that
fails in headless containers (UDP camera stream not available).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files changed (2) hide show
  1. Dockerfile.demo +3 -1
  2. hello_world/app.py +2 -0
Dockerfile.demo CHANGED
@@ -28,6 +28,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
28
 
29
  # MuJoCo headless rendering — OSMesa software renderer, no GPU required
30
  ENV MUJOCO_GL=osmesa
 
 
31
 
32
  # HuggingFace Spaces requires non-root user with uid 1000
33
  RUN useradd -m -u 1000 user
@@ -37,7 +39,7 @@ ENV PATH="/home/user/.local/bin:${PATH}"
37
  WORKDIR /home/user/app
38
 
39
  # Install MuJoCo + reachy-mini SDK (provides reachy-mini-daemon command)
40
- RUN pip install --no-cache-dir --user mujoco "reachy-mini>=1.2.8,<1.3"
41
 
42
  # Copy the hello_world app and install as editable package
43
  # (editable so the daemon discovers it via entry points)
 
28
 
29
  # MuJoCo headless rendering — OSMesa software renderer, no GPU required
30
  ENV MUJOCO_GL=osmesa
31
+ # Demo mode — skips hardware media (camera/audio) in app init
32
+ ENV DEMO_MODE=1
33
 
34
  # HuggingFace Spaces requires non-root user with uid 1000
35
  RUN useradd -m -u 1000 user
 
39
  WORKDIR /home/user/app
40
 
41
  # Install MuJoCo + reachy-mini SDK (provides reachy-mini-daemon command)
42
+ RUN pip install --no-cache-dir --user mujoco "reachy-mini"
43
 
44
  # Copy the hello_world app and install as editable package
45
  # (editable so the daemon discovers it via entry points)
hello_world/app.py CHANGED
@@ -8,6 +8,7 @@ Provides a Status dashboard with system telemetry and robot state.
8
  __all__ = ['HelloWorld']
9
 
10
  import logging
 
11
  import threading
12
  import time
13
  import urllib.request
@@ -37,6 +38,7 @@ class HelloWorld(ReachyMiniApp):
37
  """A developer dashboard app for Reachy Mini with system telemetry."""
38
 
39
  custom_app_url: str | None = "http://0.0.0.0:8042"
 
40
 
41
  def __init__(self):
42
  super().__init__()
 
8
  __all__ = ['HelloWorld']
9
 
10
  import logging
11
+ import os
12
  import threading
13
  import time
14
  import urllib.request
 
38
  """A developer dashboard app for Reachy Mini with system telemetry."""
39
 
40
  custom_app_url: str | None = "http://0.0.0.0:8042"
41
+ request_media_backend: str | None = "no_media" if os.environ.get("DEMO_MODE") else None
42
 
43
  def __init__(self):
44
  super().__init__()