OverZeeAir-Binary-Hub is an OTA (Over-The-Air) firmware distribution server for ESP32 projects built with OverZeeAir.
OverZeeAir is an ESP32 OTA framework β it equips your ESP32 project with the ability to receive and apply firmware updates Over-The-Air.
This repository serves as the centralized public endpoint where firmware builds from all OverZeeAir-powered projects are published and delivered to devices. Once a new firmware build is ready, it gets published here. ESP32 devices running OverZeeAir check this repository at runtime, compare versions, and pull the latest binary directly via GitHub Pages.
OverZeeAir-Binary-Hub/
βββ projects/
βββ OverZeeAir/
βββ update.json β version metadata (devices read this)
βββ CHANGELOG.md β release history
βββ release/
βββ firmware.bin β compiled binary
This repository contains only compiled binaries and release metadata β no source code or build tooling.
When a device boots, it reaches out to this repository (via GitHub Pages) rather than the development repository to check for and download firmware updates.
Update sequence on device boot:
flowchart LR
A[Device Boots] --> B[Connect to WiFi]
B --> C[Fetch latest.json at regular intervals]
C --> D[Compare with current firmware version]
D --> E{Newer version available?}
E -- No --> F[Continue normal execution]
E -- Yes --> G[Download firmware.bin]
G --> H[Flash OTA partition]
H --> I[Reboot into updated firmware]
GitHub Pages serves this repository as a static file host, providing a stable and always-on firmware endpoint without the need for a dedicated server.
Each project maintains a update.json file that devices use to determine whether an update is available and where to download it from.
{
"version": "1.1.0",
"firmware_url": "https://<org>.github.io/OverZeeAir-Binary-Hub/projects/OverZeeAir/release/firmware.bin"
}The device reads this file, compares the version string against its own, and decides whether to update. The binary URL is resolved dynamically β no hardcoded paths in firmware.
Future fields may include:
{
"version": "1.2.0",
"firmware_url": "...",
"sha256": "...",
"channel": "stable",
"mandatory": false
}New firmware is published here from the private/public source repository (OverZeeAir) after a successful build.
Steps:
- New firmware compiled β
.bingenerated in source repo - Binary pushed to
projects/OverZeeAir/releases/ update.jsonupdated with new version and URLCHANGELOG.mdupdated- Changes pushed β GitHub Pages updates automatically
- ESP32 Devices discover the update by periodically checking the
update.jsonfile and pull the new firmware
flowchart LR
A[Develop New Firmware] --> B[Compile Binary]
B --> C[Publish firmware.bin]
C --> D[Update latest.json]
D --> E[Update CHANGELOG]
E --> F[Push to GitHub]
F --> G[GitHub Pages Deploys]
G --> H[Firmware Ready to be fetched<br> by ESP32 devices]
flowchart LR
subgraph Development
A[Private/Public Source Repo<br>Ex:SmartHome] --> B[Build Firmware .bin]
end
subgraph Distribution
B -- Publish--> C[OverZeeAir-Binary-Hub Repo]
C -- Firmware hosted--> D[GitHub Pages<br>Hosting]
D -- Fetched--> E[ESP32 OTA Clients]
end
This separation ensures that source code remains private while only the compiled release artifacts are exposed to devices.
The projects/ directory is designed for multiple firmware channels:
projects/
βββ OverZeeAir/
βββ SmartHome/
βββ ChemFlow-Vending Machine/
Each project directory manages its own update.json, binary releases, and changelog β all served from this same distribution infrastructure.