GitHunt
ME

mediocre9/voyager-ota

a channel based monotonic semver FOTA release distribution platform for developers.

Backend
Devices
Client Library
License

VoyagerOTA

A mini backend system for managing software releases for devices.
Every release is treated as a proper artifact, versioned, validated, and deployed to the correct channel.
Only verified production builds reach field devices.

Features

  • Create draft releases with versioning and changelogs.
  • Prevent version collisions and duplicate binaries.
  • Background workers validate build types automatically.
  • Verified production builds move to a safe staging channel.
  • Promote releases to production with explicit approval.
  • Rollback or revoke releases when necessary.
  • Devices fetch updates efficiently via cache or database.

Planned Features

  • Devices report if updates are applied.
  • Basic health and telemetry via MQTT.

Release Flow

  1. Draft Release: Create a release draft with only metadata (version, changelog), no binaries yet.
  2. Upload Binary: Submit the compiled binary; the system hashes it and rejects duplicates.
  3. Build Inspection: Background workers analyze the binary to determine its build type.
  4. Staging Channel: Verified production builds are moved to the staging channel for testing.
  5. Promotion to Production: Manually approve and promote the release to production.
  6. Device Fetching: Devices fetch updates from the appropriate channel (staging or production) depending on their mode.

Architecture

Architecture Diagram

Release Rules

  • Versions must always advance; duplicates rejected
  • Only one non-production release per project
  • Development/unknown builds cannot be promoted
  • Promotion requires explicit action

Setup

Note

Create a .env.development file in the root before running the server.

npm install

# then run server in development mode....
npm run dev

# and then run artifact worker separately.....
npm run artifact-worker

Integration

Tip

Use the official client library voyagerota-client-lib to handle OTA updates on ESP32 and ESP8266 devices.


For full integration details, see the official documentation: VoyagerOTA Documentation

Languages

TypeScript99.7%JavaScript0.3%

Contributors

MIT License
Created September 11, 2025
Updated March 8, 2026