Skip to content

For customers whose servers can’t reach skyops.io — regulated environments, classified networks, bad-connectivity sites — SkyOps ships an offline mode.

How it works

  1. Staff generates a monthly mirror bundle — a signed zip containing: the engine binary, a month-scoped license file, signed update manifests, the license server’s public key.
  2. You transfer the bundle to the target server (USB, internal file share, whatever your security policy allows).
  3. Run skyops install --offline --bundle=<path> on the server.
  4. The installer verifies bundle integrity (Ed25519 over every file), then unpacks to /etc/skyops/offline/.
  5. The engine runs without heartbeating; all license checks use the offline file.

Renewal

Each bundle expires in 35 days (30-day coverage + 5-day grace). A new bundle arrives monthly; run skyops upgrade --offline --bundle=<new> and the engine swaps license files + image layers.

Missed a renewal?

The engine enters read-only mode after the grace window: existing apps keep running, no new deployments, dashboard shows an expired banner. Loading a fresh bundle restores full operation — no state loss.

Usage reporting

Offline engines cache usage counters and write a signed usage export bundle once a month. You include it with the next renewal request — staff’s reconciler imports it without ever needing network contact between the two sides.

See ADR-014 for the full threat model and renewal cadence.