No hardware? Run the virtual wall
You can try the whole rescue exercise without soldering, wiring, or buying panels.
The virtual wall is a software-only version that runs on your laptop. It shows the same panel animations, the same shared rescue scene, and the same team scores you would see on the physical wall. It is useful for learning how coordination breaks down, for checking a published dataset, and for preparing before you build.
What you get
With only a computer you can:
- run the container / reproduce tooling to check your setup
- run host simulation of a rescue drill
- preview panel animations in a browser
- replay published datasets on screen
You do not need LED panels, controllers, power supplies, or printed parts for any of this.
What is simulation here
Be clear about this: the virtual wall is simulation.
The quadcopter scenario is a visualisation on a shared virtual world plus the panel wall. It is not a flying aircraft. The scored results are host replay, not on-node measurement.
When a result says verified, that means label segregation, not crypto proof. In plain terms: the checking system keeps test labels separate so scores are not mixed. No planner has passed full gates yet.
This honesty matters because rescue work depends on trust. What looks smooth on screen may still struggle with real light, sound, and radio friction.
What you can do software-only
- Check the reproduce path. This confirms your Python, container, and files match.
- Run host simulation. This steps through a seeded rescue drill on your computer.
- Watch panels in your browser. This shows the 64x64 animations as the web page would show them.
- Replay a dataset. This replays sealed journals and scores from the 15 pre-registered experiments, including clear messages at 72.9% team success, silence / private at 56.6%, and corrupted at 33.6%.
Datasets are hash-linked, redaction-scanned, and shareable. The loop is the same each time: run a seeded drill, save sealed journals and scores, review in lanes, change the setup, and re-run. Hypotheses are written down first, scoring is held out, and failures are published.
What still needs real hardware
The virtual wall cannot show you:
- Panel light. The real node uses a Waveshare ESP32-S3-RGB-Matrix board, N32R16 with 32MB flash and 16MB PSRAM, driving a P2.5 64x64 RGB LED panel, 160x160mm. Brightness, viewing angle, and diffusers change what rescuers actually see. Printed diffusers and mounts are in
cad/. - Sound in a room. Each real node has perimeter speakers in printed carriers, plus onboard mics. A laptop speaker does not behave the same.
- Real sensing and time. Real nodes carry microSD per node, SHTC3 for temperature and humidity, QMI8658 IMU, and PCF85063 RTC.
- Real radio friction. Lost packets, delay, and interference only appear with real radios and real placement.
- Controllers and power. The full wall uses an ESP32-S3 Korvo for display, touch, web host, planner sim and learning lab, a LilyGo T5 4.7in ESP32-S3 handheld, and a MEAN WELL LRS-350-5 5V supply.
If you later build, node firmware builds with:
pio run --project-dir firmware/node-platform -e waveshare-s3
Check the repo docs for handheld and Korvo build flags. Korvo uses pinned ESP-IDF 6.1. Use Python via uv only. Identity is provisioned per device privately with tools/node-commissioner.
Start in three steps
You need only a recent computer with container support and uv for Python.
- Verify your setup
Run:
tools/reproduce/run.py --verify
Run it through uv. This is the starting check. It tells you if files, Python packages, and the reproduce container are ready. Fix any message it shows before you continue.
- Open the browser preview
Start the node-commissioner preview. It serves on 127.0.0.1:8766.
Open http://127.0.0.1:8766 in your browser. You should see panel animations and the shared scene. This is simulation on your host, not light from a physical panel.
- Run a seeded host drill
Pick one seeded drill from the preview page and run it end to end. Save the journal and score files it produces. Keep them sealed, meaning do not edit them by hand after the run.
Check the repo docs for exact launch flags for your system.
Replay a published dataset on screen
- Download one shareable dataset link from the results page.
- Load it in the preview server at
127.0.0.1:8766. - Watch the same steps the rescue team took: messages sent, pauses, retries, and final outcome.
- Compare your replayed score to the published score. They should match, because this is host replay.
- Read the pre-registered hypothesis for that run, then look at failures too, not only successes.
This is how to use the headline numbers responsibly. They came from host simulation replay, not from on-node testing.
How to read what you see
- If animations look clear in the browser, that means the logic is clear. It does not mean the LEDs will look clear across a smoky hall.
- If team success drops from 72.9% to 33.6% when messages are corrupted, that shows how much rescue coordination depends on clear wording.
- If a planner does well in replay, that is interesting, but remember: no planner passed full gates yet.
Use the virtual wall to learn, to ask better questions, and to decide if building the physical wall is worth it for you.
Source in the repo
tools/reproduce/run.py- verify script and reproduce entry pointtools/node-commissioner- private identity provisioning and browser preview at 127.0.0.1:8766, check the repo docs for flagsfirmware/node-platform- node build, check the repo docs for handheld and Korvo guidescad/- finished printed models for diffusers, carriers, and mounts- check the repo docs for dataset links, pre-registration sheets, and full build guides