Skip to content

Deployments

A deployment is a first-class entity that says: "these devices should receive this artifact, at this percentage, with this rollout seed."

Anatomy

Field Notes
artifact The firmware to deliver. Required.
groups Zero or more device groups. Unioned. Empty means no constraint.
channels Zero or more release channels. Unioned. Empty means no constraint.
percentage Integer 0–100. Cohort cutoff.
rollout_seed Auto-generated. Don't change mid-rollout.
state draft, active, paused, completed, cancelled.
created_at / created_by For audit.

A device is eligible for a deployment when it satisfies every axis the deployment targets, and its hardware is compatible with the artifact. An untargeted axis places no constraint, so a deployment naming only channels ignores group membership entirely. A deployment naming neither reaches nobody: selection is always explicit.

A device is offered the artifact when, additionally, its cohort bucket falls below the deployment's percentage.

States

stateDiagram-v2
    [*] --> draft: create
    draft --> active: start
    active --> paused: pause
    paused --> active: resume
    active --> completed: complete
    paused --> completed: complete
    active --> cancelled: cancel
    paused --> cancelled: cancel
    draft --> cancelled: cancel
    completed --> [*]
    cancelled --> [*]

A paused deployment is invisible to devices; checks return as if it didn't exist. Resuming restores normal behavior; cohort decisions are preserved because the seed and percentage are unchanged.

Multiple deployments at once

You can have many active deployments in a project. The engine simply picks the highest build number among artifacts the device is both eligible for and inside the cohort cutoff for. This naturally handles:

  • A 100% deployment of build 41 (the floor) plus a 5% canary of build 42. Devices outside the canary cohort get 41; inside it they get 42.
  • A beta channel deployment of 42 alongside a stable channel deployment of 41. Devices on each channel get the right one.

See Cohorts and rollout math for details.