Robomates HQ
Web-based control center for managing and playing games with Robomates robots. Runs in any Chromium browser — no apps to install, no drivers.
View on GitHub →How It Works
HQ uses the Web Bluetooth API to connect directly from your browser to a repeater or robot.
Connect via Bluetooth
Click Connect — the browser scans for nearby RBM_ devices. Up to 6 simultaneous connections.
Repeater Bridge
The repeater receives BLE commands and broadcasts them to all robots over 869 MHz RF — ~50 m range.
Live Telemetry
Robots send battery, temperature, position, and fall status every 750 ms via PING messages.
Direct Connection
Any robot can connect directly to HQ via BLE — no repeater needed for small setups.
Games
Last robot standing wins. Robots physically push each other off an arena surface.
Zombies spread infection through proximity. Survivors must evade until the timer runs out.
Free play mode for manual control, testing, and demos.
Developer Tools
BLE Dev
Advanced multi-tab developer interface:
| Tab | Purpose |
|---|---|
| Subprograms | Visual block editor for autonomous robot behaviors, bytecode upload |
| Controller | Virtual gamepad with joystick and keyboard mapping |
| Melody | Buzzer melody composer with piano keyboard and presets |
| Mapping | Per-controller button/axis mapping, robot calibration |
| Crypto | ECDSA P-256 key retrieval, signing, and verification |
Serial Dev
USB serial interface for robot configuration:
- Read firmware version and robot name
- Change robot name (3–10 alphanumeric characters)
- Flash firmware updates directly from the browser via esptool-js
Admin
Database management (protected by a separate admin password):
- Register and manage robot public keys (ECDSA P-256)
- View and edit robot names and Elo ratings
- Monitor database connection status
Smart State Reconciliation
HQ minimizes RF bandwidth with an implicit ACK system:
Tech Stack
Self-Hosting
git clone https://github.com/user/robomates-web-hq.git
cd robomates-web-hq
export SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
export ADMIN_PASSWORD="your-admin-password"
export POSTGRES_URL="postgresql://user:pass@host:port/db"
docker compose up -d
HQ will be available at http://localhost:6301