Open-source building blocks for ESP32 mesh networks, IoT telemetry and hardware-in-the-loop testing.
Website · painlessMesh docs · esp32-rig guide · Contributing · Security
Alteriom builds IoT sensor networks: ESP32 and ESP8266 nodes that talk to each other over a Wi-Fi mesh and LoRa, and report through MQTT. The parts of that stack that are useful to anyone building similar systems are open source here, from the mesh library running on the device to the rig that tests firmware on real boards before it ships.
| Project | What it does | Get it |
|---|---|---|
| painlessMesh |
Self-organising Wi-Fi mesh for ESP32 and ESP8266. Our extended fork adds structured IoT packages (sensor, command, metrics, health, topology), broadcast OTA and an MQTT bridge with automatic gateway failover. | Arduino Library Manager · PlatformIO · npm · Docs |
| alteriom-ebyte-lora-e220-library |
Driver for EByte E220 (LLCC68) LoRa modules, tested on Arduino, ESP8266, ESP32, STM32 and Raspberry Pi Pico (RP2040). | Arduino Library Manager · PlatformIO · Docs |
| painlessMesh-simulator | Runs 100+ virtual ESP32/ESP8266 mesh nodes on a desktop. YAML scenarios for latency, packet loss and partitions let you test mesh behaviour without hardware. | Build from source |
| Project | What it does | Get it |
|---|---|---|
| alteriom-mqtt-schema |
Versioned JSON Schemas, TypeScript types and precompiled Ajv validators for the MQTT payloads our firmware emits: one source of truth between device and backend. | npm |
| webhook-client |
TypeScript client for the Alteriom Webhook Connector: typed REST API, HMAC-SHA256 signature verification, Express / Fastify / Next.js adapters. | npm |
| alteriom-webhook-client-python |
Python SDK for the same service: signature verification, Pydantic models and a FastAPI dependency. | PyPI |
A compile-only CI can't tell you what a radio, an OTA update or two boards talking to each other will do. These repositories let your CI test firmware on real boards.
| Project | What it does | Get it |
|---|---|---|
| esp32-rig |
A service on a Raspberry Pi beside a bank of real boards. It flashes the bundle your CI built, runs your pytest suite, records every serial line and returns a verdict. Includes a dashboard, an API and a hardware abstraction layer for ESP32, C3, C5, C6, S3 and ESP8266. | Guide · Releases |
| esp32-hil-firmware |
The rig's health-check firmware: one image per chip family that proves each board boots, flashes, resets and sees the radio before your suite runs. | Releases |
| esp32-rig-example | The smallest project a rig can run: firmware, a three-test suite and the workflow that builds the bundle. Fork it to start your own. | Fork it |
| Project | What it does | Get it |
|---|---|---|
| alteriom-docker-images |
Pre-built PlatformIO builder images for ESP32, ESP32-C3 and ESP8266 firmware, published to GitHub Container Registry. Runs as non-root by default. | GHCR |
| repository-metadata-manager |
Policy-driven repository compliance checks. Remediation goes through plan, approve, apply and verify, so nothing changes without review. | npm |
| ai-dev-skills | 28 validated skills for AI coding agents, covering frontend, backend, DevOps and architecture. | Clone it |
flowchart LR
NODES["Sensor nodes<br/>painlessMesh · LoRa E220"] -- "Wi-Fi mesh" --> BRIDGE["Bridge node"]
BRIDGE -- "MQTT" --> BACKEND["Your backend"]
SCHEMA["@alteriom/mqtt-schema"] -. "validates payloads" .-> BACKEND
BUILDER["alteriom-docker-images"] -. "builds firmware" .-> NODES
SIM["painlessMesh-simulator"] -. "tests at scale" .-> NODES
RIG["esp32-rig"] -. "tests on real boards" .-> NODES
# Mesh networking on ESP32 / ESP8266 (PlatformIO)
pio pkg install --library "sparck75/AlteriomPainlessMesh"
# Validate device MQTT payloads in Node.js
npm install @alteriom/mqtt-schema ajv
# Build ESP32 firmware without installing a toolchain
docker pull ghcr.io/alteriom/alteriom-docker-images/builder:latest- Found a bug or have an idea? Open an issue on the relevant repository. The contributing guide explains how we work.
- Have a question about the mesh? Ask in painlessMesh Discussions.
- Found a vulnerability? Please report it privately, as described in our security policy.
- Everyone taking part is expected to follow our code of conduct.