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
| Element | What it must contain | The failure it prevents |
|---|---|---|
| Manifest | Bundle id, build id, source revision, timestamp, target version, minimum current version, every file with its digest | A site 2 releases behind applying an upgrade that assumes an intermediate migration |
| Application payload | Images or binaries pinned by content digest and exported as files, never by tag | A tag that moved between build and install, so 2 sites run different code from 1 bundle |
| Dependency closure | Every OS package, library, font, timezone database and trust store the payload touches | An install that reaches for a package index that is not there |
| Model artefacts | Weights, the runtime version they were compiled against, and the class list they were trained on | New weights scored against an old class list, which relabels instead of failing |
| Migrations | Forward and backward, with the schema version each moves between | A rollback blocked by a database the previous version cannot read |
| Configuration | New defaults plus a diff against the previous defaults | A site's local override quietly reverted by an upgrade |
| Integrity material | 1 SHA-256 digest per file and 1 detached signature over the manifest | A bundle altered in transit, or applied to the wrong site |
| Software bill of materials | The component inventory in a standard format such as SPDX or CycloneDX | A security team unable to say whether a new vulnerability is present on site |
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.
- 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.
- 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.
- 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.
- Dry-run the environment checks: free disk against payload plus retained version, GPU driver and runtime versions, and confirm the rollback target is present.
- Stage into a new directory or image reference without switching over. The upgrade is now fully prepared and nothing is live.
- 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
The work behind this page
Builds from our portfolio that this page draws on.
Open Vision PPE Monitoring
Boundary surveillance, PPE compliance monitoring, and intrusion detection via real-time video analytics. Runs fully on-premise — no cloud required.
Safety & ComplianceFactory OS
Production planning and task management for a tier-1 apparel manufacturer — replacing Excel with automated milestone planning, SOP gate enforcement, and real-time visibility.
ManufacturingRead next
- A PPE violation is a record with an owner, not a red box on a screenA red box on a monitor is not a violation. The record underneath it — zone, rule version, duration, clip, owner, state — is what a supervisor actions and an auditor reads.definition
- Drawing a restricted zone on a camera view: what the polygon meansThe polygon is the smallest part of a zone. The entry rule, the dwell condition and the assumption about where the floor is are what decide who gets alarmed on.definition
- Everything works until the cameras switch to infrared at duskThe collapse tracks the camera's day-night switch, not sunset. Once the infrared cut filter drops out, a colour-keyed vest class is scoring on a monochrome frame it has never seen.diagnostic
- False reject rate: what the line feels, not the accuracy on the slideA 1% false reject rate sounds like rounding. At 1,200 parts an hour it is 96 good parts a shift and over an hour of somebody re-checking them.definition
- Half a part in frame: trigger and encoder faults that look like the modelStreaked surfaces, clipped parts and duplicated frames are acquisition faults with physical causes and arithmetic answers. Counting triggers against parts for 100 pieces tells you which one you have.diagnostic
- It keeps up on the bench and falls behind at line speedA cell that is fast on the bench and late on the line has either a latency problem or a throughput problem, and they need opposite fixes. Queue depth over ten minutes tells you which, and a per-part budget tells you where the time went.diagnostic
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