An IoT Runtime, Cloud Platform, Simulator, and Companion App
Build, test, and manage connected devices β without hardware dependencies.
π Master PRD Β β’Β π Architecture Β β’Β π Roadmap
Status: Active Development (Alpha)
DeviceOS is an experimental IoT platform under active development. Core runtime, simulator, cloud backend, and dashboard are functional. Flutter companion app and real hardware support are in progress.
π End-to-End Milestone Reached! (v0.2.0-beta)
The core infrastructure of DeviceOS is officially ALIVE! We have successfully engineered and verified the complete architecture: BLE Provisioning β Go Cloud Backend β WebSocket Streaming β Live Flutter Digital Twin. The Flutter App can mock ESP32 BLE provisioning to another phone, push telemetry via a Python edge simulator, and instantly render Live Digital Twin sparkline graphs.
Overall Completion: ~55-60%
| Phase | PRD Scope | Status | % |
|---|---|---|---|
| Phase 1: Foundation | HAL interfaces, BLE GATT provisioning, offline cache | β
HAL done, β
Offline cache done, |
~80% |
| Phase 2: Cloud Sync | Registry + Shadow API, state sync deltas, CLI commands | β Registry/Shadow API done, β State sync done, β CLI commands implemented | ~85% |
| Phase 3: Rollouts & Management | Dual-partition OTA on ESP32, Next.js console, rules engine | ~50% | |
| Phase 4: Swarm & Matter | Matter/Thread, P2P mesh, edge AI warnings | β 0% β Not started | 0% |
DeviceOS is a production-grade, hardware-independent IoT platform. It allows developers to design, simulate, provision, monitor, and manage connected devices before purchasing any physical hardware.
The platform is built around a core architectural principle:
Hardware is just another transport implementation.
Everything from the provisioning flow, device shadow, telemetry pipeline, and OTA engine runs identically whether backed by a software simulator today or an ESP32 tomorrow.
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Flutter App β (Companion)
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β BLE GATT / HTTP (simulated)
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββ
β ProvisioningTransport API β (Abstraction Layer)
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βββββββββββββββ΄ββββββββββββββ
β β
ββββββββββΌβββββββββ ββββββββββββΌβββββββββββ
β Simulator β β ESP32 / Real HW β
β (HTTP local) β β (BLE GATT) β
ββββββββββ¬βββββββββ ββββββββββββ¬βββββββββββ
β β
βββββββββββββββ¬ββββββββββββββ
β Wi-Fi / MQTT
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββ
β Go Cloud Platform β
β Device Registry Β· Shadow API Β· WebSocket Hub β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββ
β Next.js Dashboard β
β Fleet View Β· Provisioning Β· Live Telemetry β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Technology | Status |
|---|---|---|
| C++ Runtime | C++17, CMake | β Complete |
| Hardware Abstraction Layer | C++ Interfaces | β Complete |
| Device Simulator | Go | β Complete |
| Cloud Platform | Go, SQLite | β Complete |
| Dashboard | Next.js 15, React | β Complete |
| Provisioning Flow (E2E) | HTTP β State Machine | β Complete |
| Device Shadow API | REST | β Complete |
| OTA Engine (Core) | C++ | β Complete |
| Automated Test Suite | Go test, Node.js | β 18/18 passing |
| Flutter Companion App | Flutter 3 | π§ In Progress |
| CI/CD Pipeline | GitHub Actions | π Planned |
| Digital Twin | β | π Planned |
- Go 1.22+
- Node.js 20+
- CMake 3.20+ (for C++ runtime)
go run ./cloud/cmd/server
# β Listening on :8080cd dashboard
npm install
npm run dev
# β http://localhost:3000go run ./cli/cmd/deviceos simulate --devices 3
# β sim_dev_0001 advertising on port 9001
# β sim_dev_0002 advertising on port 9002
# β sim_dev_0003 advertising on port 9003Open http://localhost:3000 β BLE Provisioning β Enter port 9001 and credentials β Click Provision Device.
Watch the state machine execute:
BLE_ADVERTISING β PROVISIONING β [BLE OFF] β WIFI_CONNECTING
β CLOUD_CONNECTING β SHADOW_SYNC β RUNNING
UNPROVISIONED
β
BLE_ADVERTISING β HTTP server starts on port 900X (simulates BLE GATT)
β
PROVISIONING β Waiting for Wi-Fi credentials from dashboard/app
β
[StopAdvertising] β BLE intentionally shut down by FSM (not a crash)
β
WIFI_CONNECTING β Simulates Wi-Fi join delay
β
CLOUD_CONNECTING β Registers device with cloud registry
β
SHADOW_SYNC β Pulls initial desired state
β
RUNNING β Telemetry loop starts, publishes every 3-6s
Run the public end-to-end test suite:
# With all 3 services running:
node qa_test.jsResults: 18/18 tests passing
β
Cloud :8080 reachable
β
Dashboard :3000 serving
β
Simulator ports 9001/9002/9003 listening
β
CORS preflight returns correct headers
β
Provision device β 200 OK
β
Cloud shadow created after provisioning
β
All 3 devices registered in cloud
β
Wrong port β connection refused (expected)
β
Invalid JSON β 400 (expected)
β
Non-existent device β 404 (expected)
β
Live telemetry: temperature changing between polls
DeviceOS has a private, multi-layer automated QA workflow running internally. This pipeline orchestrates:
- Layer 1 β Unit Tests: Go, Dart, and C++ unit tests run in isolation.
- Layer 2 β Integration Tests: Full stack spun up automatically; provisioning, shadow sync, and telemetry flows are tested end-to-end.
- Layer 3 β Regression Suite: BLE mock handshake, WebSocket live-stream, and device shadow delta verification run after every change.
- Layer 4 β Edge Simulation: A scripted Python agent simulates real ESP32 behavior and validates cloud responses.
The internal pipeline tooling and CI configuration are not open-sourced at this time. Contributors and collaborators may request access privately.
The simulator models realistic failure conditions:
| Failure | Behavior |
|---|---|
| Wi-Fi disconnect | Auto-reconnects via CLOUD_CONNECTING |
| Packet loss | Telemetry dropped, loop continues |
| Power cycle | Full reset to UNPROVISIONED |
| Cloud 409 (re-register) | Idempotent β INSERT OR IGNORE |
| Advertising timeout | Restart advertising cycle |
DeviceOS/
βββ cloud/ # Go cloud platform (API, shadow, registry)
βββ cli/ # Go CLI tool + simulator
β βββ simulator/ # State machine + BLE transport abstraction
βββ dashboard/ # Next.js dashboard
βββ runtime/ # C++ device runtime + HAL
βββ sdk/ # C++ developer SDK
βββ docs/ # Architecture Decision Records (ADRs)
βββ tests/ # Integration tests
- v0.1.0-alpha β Simulation Platform MVP
- v0.2.0-beta β Flutter Companion App (BLE Provisioning + Live Digital Twin) π
- v0.3.0 β Offline Rules Engine + Enterprise Dashboard
- v0.4.0 β Fleet Management + OTA Deployment Engine
- v1.0.0 β Real ESP32 Hardware Integration
MIT Β© 2026 Karan Chhunchha