For customers whose servers can’t reach skyops.io — regulated
environments, classified networks, bad-connectivity sites — SkyOps
ships an offline mode.
How it works
- 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.
- You transfer the bundle to the target server (USB, internal file share, whatever your security policy allows).
- Run
skyops install --offline --bundle=<path>on the server. - The installer verifies bundle integrity (Ed25519 over every file),
then unpacks to
/etc/skyops/offline/. - 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.