Skip to content

docs(readme): fix broken no-hardware Docker quickstart#1216

Open
dapos-tech wants to merge 1 commit into
ruvnet:mainfrom
dapos-tech:fix/docker-quickstart-no-hardware
Open

docs(readme): fix broken no-hardware Docker quickstart#1216
dapos-tech wants to merge 1 commit into
ruvnet:mainfrom
dapos-tech:fix/docker-quickstart-no-hardware

Conversation

@dapos-tech

Copy link
Copy Markdown

Problem

The headline "Option 1: Docker (simulated data, no hardware needed)" command in the README does not run on a clean machine. This appears to be the single most common "can't get it to work" complaint (#1125, #509, #951, #301).

Reproduced on a fresh pull of ruvnet/wifi-densepose:latest:

$ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
[entrypoint] ERROR: refusing to start sensing-server with default posture: RUVIEW_API_TOKEN is unset AND bind is 0.0.0.0 ...
# container exits with code 64

Three compounding issues for a no-hardware evaluator:

  1. Auth guard (Docker default exposes unauthenticated sensing API and /ws/sensing stream #864) refuses a 0.0.0.0 bind without a token → exit 64 (fires first, so the command never even starts).
  2. CSI_SOURCE defaults to auto, which fails loud (cognitum-csi-capture unit ships with --simulate (synthetic CSI) by default #937) when no ESP32/NIC is detected → exit 78. For the simulated demo it must be set explicitly.
  3. The WebSocket port 3001 was not published, so the live /ws/sensing stream is unreachable, and the UI is served at /ui/index.html, not /.

Fix

Document the verified working invocation — both required env vars, both ports, and the correct URL — with short inline notes pointing at the relevant issues so the security/fail-loud posture is explained rather than just worked around.

Verification

Ran the newly documented command verbatim on a fresh container:

  • container exit=0 (stays up)
  • GET /ui/index.htmlHTTP 200
  • GET /api/v1/sensing/latest{"classification":{"presence":true,...},"estimated_persons":1,...}
  • live sensing_update frames stream over ws://localhost:3001/ws/sensing

No code changes — README only.

🤖 Generated with Claude Code

The advertised "Option 1: Docker (simulated data, no hardware needed)"
command exits immediately on a clean machine, which is the most common
"can't get it to work" complaint (ruvnet#1125, ruvnet#509, ruvnet#951, ruvnet#301).

Reproduced on a fresh pull of ruvnet/wifi-densepose:latest:

  $ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
  [entrypoint] ERROR: refusing to start sensing-server ...
  exit 64

Three compounding issues for a no-hardware user:
  1. Auth guard (ruvnet#864) refuses a 0.0.0.0 bind without a token -> exit 64
  2. CSI_SOURCE defaults to `auto`, which fails loud (ruvnet#937) with no
     ESP32/NIC detected -> exit 78. "simulated" must be explicit.
  3. The WebSocket port (3001) was not published, so the live
     /ws/sensing stream was unreachable; the UI lives at
     /ui/index.html, not /.

Fix: document the verified working invocation (both env vars, both
ports, correct URL). Confirmed end-to-end: container exit=0, UI HTTP
200, /api/v1/sensing/latest returns presence data, and live frames
stream over ws://localhost:3001/ws/sensing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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