Spaces:
Sleeping
Sleeping
| # Pyre — Frontend Visualization | |
| A cinematic real-time visualization for the **Pyre Crisis Navigation Environment** — a reinforcement learning environment where an LLM agent navigates a burning building. | |
| ## Quick start | |
| ```bash | |
| # Open directly in a browser — no build step needed | |
| open frontend/index.html | |
| ``` | |
| The app runs entirely in-browser. **Demo mode** simulates the fire physics in JavaScript (no server required). **Live mode** connects to the deployed environment. | |
| --- | |
| ## Demo mode vs Live mode | |
| | | Demo | Live | | |
| |---|---|---| | |
| | Server needed | ✗ | ✓ | | |
| | Fire physics | JS port (exact match) | Python server | | |
| | Full reward rubric | Simplified | Complete | | |
| | Toggle | Default | Click "Live" in topbar | | |
| **Live server:** `https://krooz-pyre-env.hf.space` | |
| --- | |
| ## Controls | |
| | Key | Action | | |
| |---|---| | |
| | `Space` | Play / pause | | |
| | `→` | Single step | | |
| | `R` | New episode | | |
| | `1`–`5` | Speed ½× / 1× / 2× / 4× / 8× | | |
| Bottom bar: difficulty selector, seed input, speed control, reset. | |
| --- | |
| ## Recording episodes (Python) | |
| ```bash | |
| pip install requests # only stdlib used, no install needed | |
| python bridge/recorder.py \ | |
| --url https://krooz-pyre-env.hf.space/web \ | |
| --episodes 10 \ | |
| --difficulty medium \ | |
| --out episodes/ | |
| ``` | |
| Episodes are saved as JSON files to `episodes/`. Each file contains full frame-by-frame grid data (cell, fire, smoke grids + agent position + visible cells). | |
| --- | |
| ## File structure | |
| ``` | |
| frontend/ | |
| ├── index.html Main app — open this | |
| └── js/ | |
| ├── sim.js JS port of pyre_env fire simulation + floor plans | |
| ├── renderer.js Canvas2D rendering (fire particles, fog-of-war, agent trail) | |
| └── app.js App controller, charts, HUD, live/demo modes | |
| bridge/ | |
| └── recorder.py Record live episodes to JSON for replay | |
| ``` | |
| --- | |
| ## Architecture notes | |
| **Rendering:** HTML5 Canvas 2D — sufficient at 60fps for 16×16 grids; additive blending (`globalCompositeOperation: lighter`) for fire glow; ember particle pool (200 max); fog-of-war via per-cell alpha overlay. | |
| **Demo agent:** BFS toward nearest unblocked exit, 15% random exploration, avoids fire cells > 0.4 intensity. | |
| **Live bridge:** Polls `/web/scene` every 800ms; applies grid state to the same rendering pipeline. | |
| --- | |
| ## Demo script (30-second stage walkthrough) | |
| 1. **Open** `frontend/index.html` — fire simulation starts automatically at 1× | |
| 2. **Point out** the dark floor plan canvas with glowing fire cells, fog-of-war, and cyan agent dot | |
| 3. **Slow to ½×** to show per-step fire propagation and smoke spread | |
| 4. **Speed to 4×** — show agent navigating toward exits (green glow), closing doors (blue bars) to slow fire | |
| 5. **Highlight** the side panel: cumulative reward curve dipping on smoke exposure, fire cell count climbing, action histogram | |
| 6. **Describe partial observability** — the dark unexplored cells vs. visible corridor | |
| 7. **Reset (R)** with a different seed to show episode variety | |
| 8. If server is available: click **Live** — "Connected" chip turns green, real Python environment takes over | |