Skip to content

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: container or script
  • 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

  1. Click + Create Application.
  2. Enter a Name (e.g. nginx, edge-collector).
  3. Select Type: Container or Script.
  4. Click Create.

Versions

A version bundles an immutable spec describing how to run the app.

Creating a Version

  1. Open an application, go to the Versions tab.

  2. Click Create Version.

  3. Enter a Version string (e.g. 1.0.0, 2024-03-15).

  4. Fill in the spec using either:

    • Form mode — guided fields (image, ports, volumes, env vars, etc.)
    • Raw JSON — paste a full spec object directly
  5. Click Create.

Container Spec Fields

FieldDescription
imageContainer image (e.g. nginx:latest)
portsPort mappings (host:container)
volumesVolume mounts (host:container:options)
envEnvironment variables (KEY=value)
network_modeDocker network mode
hostnameContainer hostname
restart_policyalways / on-failure / unless-stopped / no
memoryMemory limit (e.g. 256m, 1g)
cpusCPU limit (e.g. 0.5, 2)
privilegedRun as privileged container
cap_add / cap_dropLinux capabilities
labelsDocker labels
entrypointOverride container entrypoint
cmdOverride container command
working_dirWorking directory inside container
userRun as user

Script Spec Fields

FieldDescription
commandExecutable path
argsCommand arguments
envEnvironment variables
working_dirWorking directory
timeoutExecution timeout (e.g. 30s, 5m)
userRun as user

Deployments

A deployment pushes a specific version to all devices in a target group via a rollout.

Starting a Deployment

  1. In the Versions tab, click Deploy next to the version you want to deploy.
  2. Select a Device Group.
  3. 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
  4. 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:

json
{
  "apps": {
    "nginx": {
      "version": "1.0.0",
      "spec": { "image": "nginx:latest", "ports": ["80:80"] }
    }
  }
}

Umoo — IoT Device Management Platform