Any ESP32-IDF project can add Wi-Fi and MQTT in minutes, with confidence.
- Reliable, thin hardware wrappers —
rustyfarian-esp-idf-wifiandrustyfarian-esp-idf-mqttremain focused connective tissue: starting connections, managing subscriptions, and surfacing errors — nothing more. - A growing platform-independent layer —
rustyfarian-network-pureaccumulates the logic that can be verified without hardware: validation, timing math, backoff calculations, and similar pure functions; all unit-tested on the host. - Minimal friction for adopters — adding networking to a new ESP32-IDF firmware project should
require a few lines of
Cargo.tomland no surprises; builder APIs, sensible defaults, and clear error messages make that possible. - Driven by real firmware, not speculation — new features are added when a concrete downstream project surfaces a gap; the library stays lean and avoids untested abstractions.
- An
esp-halbare-metal tier — dedicatedrustyfarian-esp-hal-*crates provide bare-metal alternatives alongside the existing ESP-IDF path. This generalises the earlier LoRa-onlyesp-halgoal into a workspace-wide pattern: separate crates per HAL tier with shared*-purecrates for platform-independent types and traits (see ADR 005). Active:rustyfarian-esp-hal-lora(LoRa radio driver) andrustyfarian-esp-hal-wifi(Wi-Fi viaesp-wifi 0.14.0, in progress). - OTA as firmware-update plumbing — OTA support may live in this workspace when it reuses the same Wi-Fi, bootloader, partition-table, and dual-HAL foundations as the networking crates.
ESP32-IDF Rust firmware developers — primarily the maintainer's own downstream projects, but with an API clean enough that any ESP32-IDF project can adopt it with confidence.
- General-purpose application-layer clients — HTTP, CoAP, WebSocket, and similar reusable clients are out of scope. Feature-specific private transports may exist behind crate APIs, such as OTA fetching, but are not exported as protocol libraries.
- Provisioning / SoftAP mode — no captive portal, BLE provisioning, or Wi-Fi setup flows.
- Full
no_std/esp-halMQTT — MQTT over bare-metal Wi-Fi (rustyfarian-esp-hal-mqtt) is a long-term goal but not an active workstream; Wi-Fi association is the currentesp-halfrontier.
- A new firmware project can integrate Wi-Fi + MQTT in under 30 minutes with no surprises.
rustyfarian-network-purehas enough coverage that most connection-logic bugs surface in host tests before touching hardware.- The CI pipeline is green on every push;
just verifypasses locally without friction. - Downstream firmware projects never need to fork or patch this library to meet a new requirement.
(none at this time)
- 2026-03-01 — Initial
VISION.mdcreated; north star, goals, non-goals, and success signals established from first review session. - 2026-03-03 — no-std /
esp-halLoRa tier added as an active goal;esp-halWi-Fi/MQTT remains a non-goal. Decision recorded in ADR 004. - 2026-03-12 —
esp-halWi-Fi promoted from non-goal to active goal; LoRa path blocked on hardware.rustyfarian-esp-hal-wifiadded to long-term goals; non-goal narrowed toesp-halMQTT only. Theesp-halgoal was generalised from LoRa-only to a workspace-wide dual-HAL pattern (ADR 005). - 2026-04-29 — OTA accepted as firmware-update plumbing in this workspace, with private transports only. General-purpose HTTP clients remain a non-goal (ADR 011).