Application Workloads
Deploy and manage an application independently of the device’s base system. This guide uses Rugix Apps, which manages application packages and their running state. For full operating system images, follow Deploy System Updates.
System and application releases have separate lifecycles. For example, you can update a data-collection application while keeping its operating system image fixed, then roll back that application if the new release fails. Nexigon selects the package version and invokes device commands; Rugix Apps on the device manages the installed application and its running state.
Install the Rugix Apps Integration
Your image needs Nexigon Agent and a configured Rugix Apps runtime, such as Docker and Docker Compose. Nexigon OS includes the runtime.
For Rugix Bakery, add the Nexigon recipe repository as described in Getting Started with Rugix, then include the application recipe alongside the agent recipes:
recipes = [
"nexigon/nexigon-agent",
"nexigon/nexigon-agent-config",
"nexigon/nexigon-rugix-apps",
]For Yocto, use the meta-nexigon-rugix layer from
meta-nexigon.
Build and boot the image with command execution enabled in Nexigon Agent. The integration publishes device commands for listing, inspecting, deploying, starting, stopping, rolling back, and removing applications. When those commands are available, the device page shows an Applications tab.
For a private repository, link it to the device’s project under Project Settings → Repositories so the device can download its software.
Deploy an Application
- Upload a Rugix App bundle (
.rugixb) and attach it to a package version. See Publish Software Artifacts. - Open the device’s Applications tab and choose Deploy Application.
- Select the package and version, then follow the deployment logs.
- Confirm that the application appears with the expected running state.
Use the application’s controls to start, stop, roll back, or remove it. The interface reports running, stopped, and failed states from Rugix Apps.
For automation, invoke nexigon.rugix-apps.deploy through the API. For a
staged fleet rollout, use operations with command steps
and checks of the reported application state.
Configure Bundle Hash Verification
To pass an asset’s metadata hash to Rugix Ctrl during deployment, attach the hash as version-asset metadata:
{
"rugix": {
"bundleHash": "sha512-256:..."
}
}
The sha512-256:... value above is a placeholder. Obtain the actual Rugix
bundle hash from your build output or calculate it with Rugix Bundler on your
workstation. For example:
rugix-bundler hash application.rugixb
Rugix hashes the bundle header for this value. Use the hash returned by its tooling so it matches the value the installer expects.
For a bundle already attached to an unsealed version, set the attachment’s metadata. For example, replace the version ID, filename, and hash in:
nexigon-cli repositories versions assets set-metadata <version-id> application.rugixb \
'{"rugix":{"bundleHash":"sha512-256:..."}}'
This replaces the attachment’s metadata, so include any existing fields you
want to retain. Complete the metadata before
sealing the version. When publishing
a new attachment, you can instead pass the same JSON through
versions assets add --metadata during the
publishing workflow.
The deploy command reads rugix.bundleHash from this attachment. Package
version metadata is separate from the metadata of each attached file.
Enable the recipe parameter:
[parameters."nexigon/nexigon-rugix-apps"]
use_bundle_hash = "true"Rebuild and deploy the image so the device uses this setting.
With use_bundle_hash enabled and the metadata present, the deploy command
passes metadata.rugix.bundleHash to Rugix Ctrl. Without it, Rugix Ctrl performs
its normal signature verification. The parameter defaults to false;
Nexigon OS enables it by default.
A hash verifies the bundle against metadata delivered through the authenticated Nexigon connection. For independent publisher authentication, configure Rugix bundle signing and a device trust root.
Use a Custom Application Updater
For applications outside Rugix Apps, store artifacts in a Nexigon repository
and use your own installation service on the device. The service can resolve
a version tag and request download URLs with
nexigon-agent repositories issue-url.
Run the updater periodically, for example with a systemd timer. It resolves the configured tag, compares the selected version with the installed version, downloads new artifacts, and installs them with your application tooling. Moving a tag changes what the next check resolves; your updater determines when and how installation happens. Define how it reports success, retries failures, and preserves or restores the previous application.
Use separate packages for system and application releases. Use separate repositories when they need different access policies. Separate packages let you promote application releases independently of system releases. Separate repositories let you control which projects can access each set of software.
Rugix Apps Commands
The integration publishes these commands. Use the device’s command manifest to inspect their input and output schemas.
| Command | Purpose |
|---|---|
nexigon.rugix-apps.list | List installed applications. |
nexigon.rugix-apps.info | Read details of an application. |
nexigon.rugix-apps.deploy | Deploy an application from a package version. |
nexigon.rugix-apps.start | Start an application. |
nexigon.rugix-apps.stop | Stop an application. |
nexigon.rugix-apps.rollback | Roll back to the previous generation. |
nexigon.rugix-apps.remove | Remove an application. |