╔═══════════════════════╗
║ ▓▓▓ PYROBOT ▓▓▓ ║
║ ◉ ◉ ────── ◉ ◉ ║
║ [ SUPPRESS ] ║
║ ╠══╣ ╠══╣ ║
╚═══════════════════════╝
🔥 🔥 🔥
Autonomous firefighter robot command center with real-time telemetry and thermal vision
Features • Quick Start • Architecture • Configuration • Development • Tech Stack
PyroBot streams live telemetry over WebSocket — showing robot position on a mission map, 16×16 thermal camera heatmap, sensor arc gauges, and real-time hazard alerts
| Feature | Description |
|---|---|
| Live telemetry | WebSocket feed at 2 Hz — temperature, gas PPM, smoke density, battery, position |
| Mission map | Animated SVG grid tracks robot position in real time with heading arrow and fire zones |
| Thermal camera | 16×16 pixel heatmap with wandering hotspot crosshair, refreshed every 800 ms |
| Hazard alerts | Rule-based alert engine fires on temp > 80 °C or gas > 60 ppm; broadcast live over WS |
| Robot controls | WASD-style movement panel + deploy foam / extend arm commands via REST |
| Mission management | Create, activate, and track firefighting missions with priority and status |
| One-command setup | docker compose up --build launches the full stack |
- Docker Desktop or Docker Engine + Compose v2
git clone <repo-url>
cd 15th_may
cp .env.example .env
docker compose up --buildOpen http://localhost:3000 in your browser.
Backend API docs: http://localhost:8000/docs
┌─────────────────────────────────────────────────────┐
│ Browser (Next.js 14) │
│ ┌──────────────┐ ┌─────────────┐ ┌────────────┐ │
│ │ MissionMap │ │ ThermalFeed │ │ AlertFeed │ │
│ │ (SVG/Framer)│ │ (pixel grid)│ │ (live WS) │ │
│ └──────┬───────┘ └──────┬──────┘ └─────┬──────┘ │
│ │ Zustand Store │ │ │
│ ┌──────┴──────────────────┴───────────────┴──────┐ │
│ │ ws.ts (WebSocket client) │ │
│ │ api.ts (REST fetch) │ │
│ └─────────────────────┬───────────────────────────┘ │
└────────────────────────┼───────────────────────────┘
│ WS + HTTP
┌────────────────────────┼───────────────────────────┐
│ FastAPI Backend │
│ ┌─────────────────────┴─────────────────────────┐ │
│ │ /ws/telemetry (WebSocket, 2 Hz push) │ │
│ │ /missions/ (CRUD) │ │
│ │ /alerts/ (REST) │ │
│ │ /robot/command (REST → robot_state) │ │
│ │ /thermal/snapshot (REST poll) │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ sensor_hub │ │ thermal_sim │ │alert_engine│ │
│ │ (sim data) │ │ (16×16 grid) │ │(rule-based)│ │
│ └──────────────┘ └──────────────┘ └────────────┘ │
│ SQLite (missions, alerts) │
└─────────────────────────────────────────────────────┘
All settings are driven by environment variables (.env):
| Variable | Default | Description |
|---|---|---|
DATABASE_URL |
sqlite:////data/pyrobot.db |
SQLite database path |
CORS_ORIGINS |
http://localhost:3000 |
Allowed frontend origin(s) |
TELEMETRY_INTERVAL_MS |
500 |
WebSocket push interval |
TEMP_ALERT_THRESHOLD |
80.0 |
Temperature alert threshold (°C) |
GAS_ALERT_THRESHOLD |
60.0 |
Gas PPM alert threshold |
cd backend
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
uvicorn app.main:app --reloadRun tests:
pytest tests/ -vcd frontend
npm install
cp .env.local.example .env.local
npm run dev| Layer | Technology |
|---|---|
| Backend | Python 3.12, FastAPI, SQLModel, SQLite, uvicorn |
| Frontend | Next.js 14, TypeScript 5, Tailwind CSS 3, Zustand 4, Framer Motion 11 |
| Transport | WebSocket (real-time telemetry), REST (CRUD + commands) |
| Container | Docker + Docker Compose v2 |
| Package mgmt | uv (backend), npm (frontend) |
MIT © 2026 Strike Robot