Manufacturing & Industrial Vision// definition

The offline update bundle: everything it has to carry across the fence

In short

An offline update bundle is one signed artefact carrying everything a disconnected site needs to move between 2 known versions: payload, full dependency closure, model weights, migrations both ways, per-file digests, a manifest and a rollback path. If the installer has to download anything after it crosses the fence, the bundle was not finished.

Key takeaways

  • 1 rule decides whether a bundle is finished: no network call after it crosses the fence, including on the reboot that follows.
  • The manifest names the target version and the minimum current version, so a site 2 releases behind is refused rather than half-upgraded.
  • Verification is the site's job: signature over the manifest, then a SHA-256 check on every file, before anything is unpacked into place.
  • The rollback target must be resident before the upgrade starts, so size the disk for 2 complete versions at commissioning.
  • Applying the same bundle twice must be safe. Transfers get retried, and a non-idempotent installer turns a retry into an outage.

An offline update bundle is 1 artefact, signed and self-describing, that takes a disconnected system from a known version to another known version without touching a network. The test that implies is the only one that matters: after the bundle reaches the plant, the installer may read nothing it did not bring. Not a package index, not a container registry, not a font, not a revocation list, not a licence server — including after the reboot at the end.

Most failed air-gapped installs are not sophisticated. They are a dependency that resolved silently on the build machine and does not exist on the floor, found at 02:00 in a 3-hour shutdown window by an engineer with no way to fetch it. The bundle exists to move that discovery into the build pipeline, which is why it sits at the centre of on-premise, edge and plant data control rather than at the end.

What is inside, field by field

ElementWhat it must containThe failure it prevents
ManifestBundle id, build id, source revision, timestamp, target version, minimum current version, every file with its digestA site 2 releases behind applying an upgrade that assumes an intermediate migration
Application payloadImages or binaries pinned by content digest and exported as files, never by tagA tag that moved between build and install, so 2 sites run different code from 1 bundle
Dependency closureEvery OS package, library, font, timezone database and trust store the payload touchesAn install that reaches for a package index that is not there
Model artefactsWeights, the runtime version they were compiled against, and the class list they were trained onNew weights scored against an old class list, which relabels instead of failing
MigrationsForward and backward, with the schema version each moves betweenA rollback blocked by a database the previous version cannot read
ConfigurationNew defaults plus a diff against the previous defaultsA site's local override quietly reverted by an upgrade
Integrity material1 SHA-256 digest per file and 1 detached signature over the manifestA bundle altered in transit, or applied to the wrong site
Software bill of materialsThe component inventory in a standard format such as SPDX or CycloneDXA security team unable to say whether a new vulnerability is present on site
Bundle contents and the failure each element prevents

The model row is what separates industrial bundles from ordinary software ones. Weights, runtime and class list must move together, because a mismatch does not crash — it relabels, silently, for as long as it takes somebody to notice. A plant self-hosting models inside the fence owns that update path in full, part of the cost weighed in when plant text has to stay on site.

If the installer needs the internet, the bundle is not an update. It is a download script with a filename.

What the receiving site checks before anything is applied

Verification happens on the box, by the box, before a single file moves into place. The signing key must already be resident, delivered out of band at commissioning: a public key travelling inside the bundle it authenticates verifies nothing.

  1. Verify the detached signature over the manifest with the key already on the machine. On failure, delete the bundle rather than investigating it in place.
  2. Recompute the SHA-256 digest of every listed file and compare. Partial transfers across removable media are common enough that this step earns its keep alone.
  3. Compare the installed version against the manifest's minimum current version, and refuse a site too far behind with the intermediate bundle named in the error.
  4. Dry-run the environment checks: free disk against payload plus retained version, GPU driver and runtime versions, and confirm the rollback target is present.
  5. Stage into a new directory or image reference without switching over. The upgrade is now fully prepared and nothing is live.
  6. Switch in the window, run a health check that exercises a real detection rather than a status endpoint, and keep the previous version until a named person signs it off.

Pinning, and the rollback that must already be on the box

Pinning on a disconnected site is stricter than anywhere else, because nothing can be resolved later. Every component is pinned by content digest rather than by tag or version range, so 1 bundle installed on 12 sites over 4 months produces 12 identical systems. A floating tag here is a guarantee that 2 plants running the same version are not.

Rollback follows the same logic: the previous version must be resident before the upgrade begins, with its own backward migration. A plan that starts by retrieving an old image is not a plan on a site with no internet — it is a site visit. Budget disk for 2 complete versions at commissioning and the requirement stops being an argument.

4 things that look like a bundle and are not

  • An installer that runs a package manager. It works in the build environment and on the vendor's laptop and nowhere on the plant network, and where the server sits makes that certain rather than likely — see which network layer an AI server belongs on.
  • An archive with no manifest. Without a declared target version and a file list with digests, the site cannot verify what it has, cannot tell whether the transfer completed, and cannot say afterwards what it applied.
  • A payload with no rollback. Half an update is a state nobody designed, and on a disconnected site it is the state you stay in until somebody drives out.
  • A bundle that covers the server and forgets the cameras. Analytics pushed into the camera makes camera firmware part of the release surface, and it has to travel in the same artefact — 1 of the ongoing costs weighed in analytics in the camera or analytics on a server.

This is release engineering rather than deployment scripting, and it is worth doing before the 1st site rather than after the 3rd. A pipeline that emits a signed, verifiable, self-contained artefact on every build is normal product and platform work, and it makes a manufacturing and industrial vision system supportable across sites that will never all be online at once.

Frequently asked questions

Short answers to the follow-ups this page tends to raise.

What is an offline update bundle?

It is a single signed artefact holding everything a disconnected system needs to move from one known version to another. That means the payload pinned by digest, the full dependency closure, model artefacts, migrations in both directions, per-file digests, a manifest and a rollback path. The defining constraint is that no network call may be required once it reaches the site, including on the reboot afterwards.

How does a site verify a bundle with no internet access?

With a signing key delivered out of band and already resident on the machine, so verification never depends on reaching a certificate authority or a transparency log. The site checks the detached signature over the manifest first, then recomputes and compares the digest of every listed file. A public key shipped inside the bundle it authenticates provides no assurance at all.

How is rollback handled when the plant cannot download anything?

The previous version has to already be on the box, with the backward migration for any schema change the upgrade made. That means sizing storage for 2 complete versions at commissioning and treating the retained version as part of the running system rather than as leftovers. A rollback that starts by retrieving an old image is a site visit dressed up as a procedure.

  • air-gapped
  • release engineering
  • plant IT
  • on-premise
// shipped work

The work behind this page

Builds from our portfolio that this page draws on.

Read next

Working on something in this space?

Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.

Start the conversation