GitHub - rugix/rugix: Robust and secure OTA updates for embedded Linux.

4 min read Original article ↗

Rugix Logo

Robust and Secure Over-the-Air Updates for Embedded Linux

Rugix Version Badge Pipeline Status Badge

Rugix is an open-source tool suite for building robust, Linux-powered products. It consists of two tools:

  • Rugix Ctrl: On-device update engine. Deploy updates with confidence, never bricking a device.
  • Rugix Bakery: Custom Linux build system. Build OTA-ready images in days, not months.

Use both together for a complete solution, or integrate Rugix Ctrl into your existing Yocto or Buildroot workflow.

Get started today! Build your first system and deploy an update, all in under 30 minutes! 🚀

Rugix Ctrl

This repository contains Rugix Ctrl, a state-of-the-art update and state management engine:

Rugix Ctrl supports different update strategies (symmetric A/B, asymmetric with recovery, incremental updates) and can be adapted to almost any requirements you may have for robust and secure updates.

Works with Yocto, Buildroot, and other Linux build systems.

For details, check out Rugix Ctrl's documentation.

For the precise update durability boundaries, interruption behavior, and operator recovery expectations implemented by this repository, see Update Reliability and Recovery.

Rugix Bakery

Robust over-the-air updates require system images built to support atomic updates. Traditional tools like Yocto are powerful but complex to set up and maintain, often taking teams months to build a production-ready pipeline. This complexity also creates risk: often only one person at a company truly understands the setup.

Rugix Bakery makes building OTA-ready system images (almost) as easy as writing a Dockerfile. Spend your time on what provides value to your users, not system-level details and build pipeline complexity.

For details, check out the Rugix Bakery repository and documentation.

Why Rugix?

Rugix is fully open-source, including all features like delta updates. We integrate with different fleet management solutions and build systems, so you stay in control without vendor lock-in.

Rugix empowers teams to ship robust products fast and without compromising on best practices like read-only root filesystems, atomic OTA updates, reliable application deployment, and reproducible builds.

Development

Rugix uses mise for development tools and tasks. Tool specifications stay intentionally loose where mise can resolve them; mise.lock records the exact versions and checksums used by developers and CI. Rust is managed separately by rustup through rust-toolchain.toml, so Cargo, rust-analyzer, and editors use the same dated nightly without requiring mise activation.

Install the locked toolchain and inspect the available commands:

Common workflows are:

mise run check                         # formatting, Clippy, dependency policy/advisories, and unit tests
mise run fmt
mise run codegen
mise run build x86_64-unknown-linux-musl
mise run package:deb x86_64-unknown-linux-musl
mise run test:system

Run mise run doctor to check host dependencies. Development requires rustup; entering the repository or running Cargo installs the configured Rust toolchain as needed. Native builds also require a C compiler, pkg-config, OpenSSL, and liblzma development files. Cross-builds require Docker or Podman. The system tests additionally require QEMU and OVMF.

To deliberately update the non-Rust toolchain, update the loose specifications if needed and run mise lock; commit mise.toml and mise.lock together. Update Rust by changing the dated channel in rust-toolchain.toml.

Run Directly from Git with Nix

The Nix flake exposes each Rugix command as both a package and an app, so no checkout is required:

nix run github:rugix/rugix#rugix-ctrl -- --help
nix run github:rugix/rugix#rugix-bundler -- --help
nix run github:rugix/rugix#rugix-util -- --help

Replace the flake reference with a tag or commit when a specific revision is required, for example github:rugix/rugix/v0.8.17#rugix-ctrl.

Commercial Support

Rugix has been created and is maintained by Silitics. Looking for commercial support? We're here to help. Need a fleet management solution? Check out Nexigon, by the creators of Rugix.

Licensing

This project is licensed under either MIT or Apache 2.0 at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache 2.0 license, shall be dual licensed as above, without any additional terms or conditions.


Made with ❤️ for OSS by Silitics