Repository navigation
Decision Records
github-actions[bot] edited this page Oct 19, 2026
·
7 revisions
Generated from
docs/adr/README.mdin the repository. Edit it there; this wiki is rebuilt on every change.
Short records of the significant choices in EdgeShell and why they were made.
| ADR | Decision |
|---|---|
| 0001 | Flask app-factory pattern |
| 0002 | SQLite WAL by default, export/import to any SQL |
| 0003 | CSRF on, fail hard on missing production secrets |
| 0004 | Central role-based access control |
| 0005 | VPN behind an interface (Tailscale now, WireGuard later) |
| 0006 | Ansible with real per-host results for fleet ops |
| 0007 | Manifest-based update and rollback |
| 0008 | Hot database plus a replicated, read-only data lake that the app cannot erase |
| 0009 | Public API: per-user credentials, least privilege, administrator control and audit |
| 0010 | Fleet safety guards: paused logins, command policy, explicit bulk actions |
| 0011 | CI as the release gate, with minimum counts and real dependencies |
| 0012 | Security model: the CIA triad for a central fleet control plane |
| 0013 | A second, VPN-independent liveness signal: encrypted MQTT heartbeats |
| 0014 | Node-RED and the remote desktop through EdgeShell at /nodered// and /remoteGUI//, isolated on the same origin |
| 0015 | Hardware lifecycle: nodes as positions, detected replacements, fault reports |
| 0016 | The heartbeat agent on every node, kept there by a routine; four ways to the broker |
| 0017 | Apps on the edge: one folder, one service, versions side by side, a way back |
| 0018 | The heartbeat agent is an app: its own venv, an atomic switch, a way back, moved over from the classic install |
Repository · Docker Hub · Report a security problem · MIT licence
Start
Deploy
- Deploy on AWS EC2
- Run on Any Cloud
- Configuration
- MQTT Heartbeat
- VPN and Network
- Database Migration
Use
How it is built
Project
Decision records