Developers
A contract small enough to hold in your head
Firmware and dashboard widgets share a widget ID. Push a value to that ID and the widget updates; the widget sends a command and your handler receives it. Everything else is built on that.
The loop
Values up, commands down
Push a value
// Arduino
device.updateWidget(
targetId,
"tempGauge",
27.4
);A Gauge whose widget ID is tempGauge now reads 27.4. No polling — the value arrives over the realtime channel.
Receive a command
// Arduino
device.setUserCommandHandler(
[](JsonObject &msg) {
// inspect and act on it
}
);Commands arrive parsed as structured JSON, with helpers to find the command, action and params.
Scripting
APIs available to dashboard scripts
Logic that belongs closer to the interface than to the firmware.
Widgets
Read and write widget values from a dashboard script
Device context
Which device the script is running against
Database
Query and write the product's tables
Storage
Persist state between runs
Events
React to incoming values and lifecycle hooks
WebSocket
Talk to the realtime channel directly
Location
Positional data where the device provides it
Firmware
Two SDKs, same contract
Arduino for the quickest path, ESP-IDF when you want the native toolchain. Both speak the same protocol, so a product can move between them without changing anything on the platform side.
Arduino
librarySecure by default. Call begin() and the device generates its keypair on-chip, provisions over Wi-Fi and authenticates itself.
#include <hyperwisor-iot.h>
HyperwisorIoT device;
void setup() {
device.begin("SSID", "PASSWORD");
}Arduino SDK ESP-IDF
componentA drop-in component: provisioning, secure WebSocket transport, the command runtime, widgets, NTP, NVS helpers and optional OTA — all behind one umbrella header, UI-framework agnostic.
# main/idf_component.yml
dependencies:
nikolaindustry/hyperwisor: "^0.1.0"
$ idf.py reconfigureTargets
ESP32 · S2 · S3 · C3 · C6 · P4
ESP-IDF
>= 5.5, < 7.0
License
Apache-2.0
UI
LVGL / raw / none
Any board
Or bring one we don't ship an SDK for
Underneath the SDKs it's standard protocols. Anything that can hold one of these connections can talk to the platform — you wire the protocol yourself instead of using a drop-in library.
WebSocket
MQTT
HTTPS
