Blog
From the Helix project
Product updates, engineering deep dives, and release notes.

Flash an ESP32 From Your Browser With the Web Serial API
No local toolchain required — use esptool-js and the Web Serial API to erase, write, and verify ESP32 firmware straight from a Chromium browser.
Talk to an ESP32 Over BLE With Web Bluetooth
Build a GATT server on an ESP32 and connect to it from a web page using the Web Bluetooth API — services, characteristics, and live notifications.
Build an Android BLE Client With Kotlin and Jetpack Compose
Scan, connect, and exchange data with a BLE peripheral from Android — runtime permissions, GATT callbacks, and a clean Compose UI over a coroutine wrapper.
Getting Started With ESP-IDF: Build and Flash Your First Firmware
Install the Espressif IoT Development Framework, understand the project layout, and build, flash, and monitor a real ESP32 app from the command line.
Connect Your ESP32 to MQTT With Mosquitto
Stand up a Mosquitto broker, publish telemetry from an ESP32, subscribe to commands, and handle reconnects, QoS, and last will the right way.
Wi-Fi Provisioning for the ESP32 Over BLE
Ship a headless device with no hardcoded credentials — accept Wi-Fi SSID and password over a BLE characteristic and persist them in NVS.
Over-the-Air (OTA) Firmware Updates on the ESP32
Understand the dual-app partition scheme and roll out a new firmware image to a fielded ESP32 over HTTPS — with rollback protection.
Secure Device-to-Cloud With mTLS and a Private CA
Run your own certificate authority with step-ca, issue client certificates to devices, and require mutual TLS on your MQTT broker and HTTP gateway.
Build a Minimal Linux Image for Your Edge Device With debootstrap
Skip the bloated vendor image — assemble a lean Debian rootfs with debootstrap, add a systemd service, and boot it in QEMU before it touches hardware.
Peer-to-Peer Browser-to-Device With WebRTC Data Channels
Bypass the relay: open a direct WebRTC data channel between a browser and a device agent, with a tiny signaling server and STUN/TURN for NAT traversal.