How it works

Install. Release. Deploy. Roll back.

The same loop whether you run 5 devices or 500.

curl -fsSL https://simpledockerops.com/install | sudo sh
Simple Docker Ops agent installed.
Pair this device:
  Code: X72K-4PQ9
  https://app.simpledockerops.com/pair
Or scan the QR code shown above.
  1. 1

    Install and pair

    Run the install command on a device that already has Docker. The agent prints a code and a QR; enter it in the portal and the device joins your organisation with its own credentials.

  2. 2

    Create an application

    Paste docker-compose.yml. Declare the variables it needs. Attach registry credentials if the images are private.

  3. 3

    Cut a release

    A release freezes the Compose file, resolves every image tag to a digest, and records the platforms each image provides. Releases are immutable.

  1. 1

    Deploy to a fleet

    Pick a device or a fleet, a strategy (waves, threshold, on-failure), and go. Devices report applying, healthy, or failed.

  2. 2

    Watch and roll back

    Container health, logs, and telemetry per device. If the gate trips, the rollout pauses or rolls back to the previous known-good release.

  3. 3

    Keep it converged

    Every device reconciles desired state on reconnect and after power loss. Drift is reported, not silently accumulated.

Under the hood

Desired state in the cloud, reconciliation on the device

  • Desired state is persisted in PostgreSQL; the control channel only carries change notifications and commands.
  • The agent re-reads authoritative state after every reconnect. Deployments are idempotent.
  • Images resolve to OCI digests at release time so a tag cannot change under a rollout.
  • Docker Engine access is root-equivalent; the agent runs with exactly the permissions it needs and every action is audited.
  • Secrets are envelope-encrypted at rest, scoped, masked in the UI, and delivered only with a release that needs them.
  • Agent updates are signed; a failed update rolls back to the previous binary automatically.

What a device reports

{
  "device": "dev_8k2m",
  "inventory": { "os": "Debian 13", "arch": "arm64",
                 "docker": "29.0.2", "compose": "2.31", "agent": "0.1.0" },
  "telemetry": { "cpu_percent": 12, "mem_percent": 43,
                 "disk_percent": 31, "cpu_temp_c": 48,
                 "throttled": false, "uptime_s": 3283200 },
  "desired_release": "rel_184", "actual_release": "rel_184",
  "state": "healthy",
  "containers": [
    { "service": "collector", "image": "ghcr.io/acme/collector@sha256:…", "health": "healthy" },
    { "service": "mqtt",      "image": "eclipse-mosquitto@sha256:…",       "health": "healthy" }
  ]
}

Add your first device free.

Five devices and five gigabytes of registry on the Free plan. No card, no sales call, no Kubernetes.

curl -fsSL https://simpledockerops.com/install | sudo sh