ESP32 · ESP8266 · C++
RisalDash brings up a responsive web dashboard in the brand style: widgets on one screen, real-time over WebSocket, offline-first first boot and AI control. Zero front-end code.
RisalUI dash("Greenhouse");
dash.gauge("Voltage", &volts, 0, 14, "V");
dash.chart("Temp", &temp, "°C").history(30);
dash.toggle("Pump", &pump, setPump);
dash.beginAP("Greenhouse", "12345678"); The linker strips unused widget types — 0 bytes. A type you use adds ~1.3–3.4 KB (its CSS + JS + code).
AP + captive portal + Wi-Fi provisioning. System font, zero external requests — works with no internet.
Pushes only changed values. Widgets on one live screen, no reloads.
30+ controls: metric, gauge, chart, toggle, slider, table, log, d-pad, joystick, map… + presets for 73 sensors.
EN / RU / AR out of the box. Only chosen languages are compiled in. Full RTL layout.
Every widget is an MCP tool. Claude/Cursor read sensors and flip relays by voice.
Live demo
The exact v0.2 UI the ESP serves — live. Swipe up to switch pages; tap the gear for theme, language and accent.
AI control · MCP
Call enableMCP() and every widget becomes a Model Context Protocol tool — Claude reads your sensors and flips your relays, by chat or voice. Human dashboard and agent interface from the same few lines of C++.
// on the device — one line:
dash.enableMCP("risal_token");
// connect an agent — point the bridge at it:
RISAL_ESP_URL=http://192.168.1.42 \
RISAL_MCP_TOKEN=risal_token \
npx risal-dash-mcp Library Manager → "RisalDash"
lib_deps =
RisalDash
ESP Async WebServer
AsyncTCP