Python-based web GUI baked into owl-os and deployed to every Retina node. Served locally at owl.local and retina.local on port 80.
- Quick links to deployed services (Passive Radar / blah2, ADS-B Map / tar1090)
- Radar config editor — schema-driven UI for updating node configuration
- Onboarding wizard — guided setup flow covering OS updates, radar stack install, location, and tower selection
- SSH key management — add and remove public keys for local access
- Cloud services toggle — enable or disable Mender OTA updates and remote access
- Flask (Python), Jinja2 templates
- Bootstrap 5 (CDN), vanilla JS — no build step
- Pydantic for config schema and form generation
- systemd service
Deployed as part of owl-os to /opt/retina-gui/. Runs as a systemd service on port 80. Mutable runtime state lives separately under /data/retina-gui/.
cd src
pip install -r requirements.txt
python app.pyVisit http://localhost:5000. Use ?demo=1 to run the wizard in demo mode without a real device.
pip install pytest
pytest tests/Tests cover routes, device state, install flow, config schema, form generation, Mender client, SSH key validation, and tower search.