Applications
Define containerized and script applications, manage versioned releases, and deploy to device groups.
Overview
An Application is a named, versioned unit of software that can be deployed to devices. Each application has:
- A type:
containerorscript - Versions: immutable release snapshots with a spec JSON
- Deployments: rollout campaigns targeting a device group
Application List
Navigate to Applications to see all apps in your tenant.
Columns: Name, Type, Versions count, Latest Version, Created date.
Filter by Type (container / script).
Creating an Application
- Click + Create Application.
- Enter a Name (e.g.
nginx,edge-collector). - Select Type: Container or Script.
- Click Create.
Versions
A version bundles an immutable spec describing how to run the app.
Creating a Version
Open an application, go to the Versions tab.
Click Create Version.
Enter a Version string (e.g.
1.0.0,2024-03-15).Fill in the spec using either:
- Form mode — guided fields (image, ports, volumes, env vars, etc.)
- Raw JSON — paste a full spec object directly
Click Create.
Container Spec Fields
| Field | Description |
|---|---|
image | Container image (e.g. nginx:latest) |
ports | Port mappings (host:container) |
volumes | Volume mounts (host:container:options) |
env | Environment variables (KEY=value) |
network_mode | Docker network mode |
hostname | Container hostname |
restart_policy | always / on-failure / unless-stopped / no |
memory | Memory limit (e.g. 256m, 1g) |
cpus | CPU limit (e.g. 0.5, 2) |
privileged | Run as privileged container |
cap_add / cap_drop | Linux capabilities |
labels | Docker labels |
entrypoint | Override container entrypoint |
cmd | Override container command |
working_dir | Working directory inside container |
user | Run as user |
Script Spec Fields
| Field | Description |
|---|---|
command | Executable path |
args | Command arguments |
env | Environment variables |
working_dir | Working directory |
timeout | Execution timeout (e.g. 30s, 5m) |
user | Run as user |
Deployments
A deployment pushes a specific version to all devices in a target group via a rollout.
Starting a Deployment
- In the Versions tab, click Deploy next to the version you want to deploy.
- Select a Device Group.
- Choose a Strategy:
- Rolling — update devices in batches (configure batch size and failure threshold)
- Canary — deploy to a small batch first, then expand
- Blue-Green — deploy new version alongside old, then switch traffic
- Click Deploy.
A rollout is created automatically and tracked in Applications → Deployments and in Rollouts.
Monitoring a Deployment
The Deployments tab shows all deployment campaigns for the app:
- Status: Running / Completed / Failed / Cancelled
- Progress bar (succeeded / failed / pending devices)
- Links to the underlying rollout
Click a deployment row to open its detail view.
Cancelling a Deployment
From the deployment detail, click Cancel Deployment. Devices that have already updated keep the new version; remaining devices are not updated.
Undeploying
From the deployment detail, click Undeploy. This creates a new rollout that removes the app from all devices in the target group.
App Shadow Keys
When an app is deployed, the backend writes to the device shadow under the key apps.<app-name>. The agent's app reconciler reads this and manages the container or script lifecycle accordingly.
Shadow desired state example:
{
"apps": {
"nginx": {
"version": "1.0.0",
"spec": { "image": "nginx:latest", "ports": ["80:80"] }
}
}
}