Air-gap Exchange

Two fully disconnected sites, operated through signed bundles. Trust the artifact, not the transport: every bundle is cosign-verified against the trust root established at install, and replayed or out-of-sequence bundles are refused.
Air-gapped sites
2
cobalt-mining · atlas-manufacturing
Freshest site data
1d
atlas-manufacturing · import #52 · yesterday
Aging
3d warns at 7d
cobalt-mining — every fleet view carries this as-of age
Pending exports
1
0.1.91 upgrade bundle · awaiting media handoff

How the exchange works

no network path exists — and none is assumed
1 · EXPORT HERE

Console builds a signed bundle: release artifacts, vuln DB, config plans, queued notifications. Contents manifest approved before it leaves.

2 · CARRY

Media or data diode — the transport is untrusted by design. Nothing about the bundle depends on how it travels.

3 · IMPORT ON-SITE

Site verifies the signature offline against its trust root, checks the sequence number, then applies through the same plan-and-approve gates.

4 · EXPORT ON-SITE

Site builds its own signed state bundle: inventory, health snapshots, operation journals, queued notifications.

5 · IMPORT HERE

Signature + sequence verified; fleet views update with the site's as-of timestamp. Stale is visible, never silent.

cobalt-mining / prod

data 3d old 0.1.88 LTS · on-site k8s
Last import (site → here)
3d ago · bundle #47 signature ✓ sequence ✓
Carried
inventory (96 resources) · health snapshot · 12 operation journals · 2 notifications
Last export (here → site)
9d ago · exp-0.1.88-patch4 · import receipt confirmed in bundle #47
Sequence guard
next expected import: #48 — an older or replayed bundle is refused, loudly
Cadence policy
weekly exchange · warn at 7d · site flagged stale fleet-wide at 10d
Pending export: 0.1.91 upgrade bundle · 1.8 GB · signed · charts + 34 private images + vuln DB 2026-08-05 + restore-test plan + 3 notifications.

atlas-manufacturing / prod

data 1d old 0.1.88 LTS · on-site k8s
Last import (site → here)
1d ago · bundle #52 signature ✓ sequence ✓
Carried
inventory (88 resources) · health snapshot · 8 operation journals · 0 notifications
Last export (here → site)
1d ago · exp-vulndb-0805 · receipt pending next import
Site-run operations
2 upgrades · 4 backups · 1 restore test — journals verified here, attributed on-site
Cadence policy
weekly exchange · on schedule
Nothing pending for this site. Next scheduled exchange: 2026-08-08 (0.1.91 bundle will be included once cobalt's canary import confirms).

Exchange history

every import/export is an audit entry with digests
WhenDirectionSiteBundleVerification
1d agoimportatlas#52 · sha256:91ce…4b02sig ✓ seq ✓
1d agoexportatlasexp-vulndb-0805manifest approved · sofia.k
3d agoimportcobalt#47 · sha256:7ba1…e990sig ✓ seq ✓
8d agoimport refusedcobalt#45 (replay)sequence 45 < 46 — rejected, audited #498
9d agoexportcobaltexp-0.1.88-patch4receipt in #47
The refused replay (8d ago) is the guarantee working: a bundle you have already seen — or one older than the current sequence — never merges, no matter how valid its signature is.

Queued for next cobalt export

3 notifications · 1 plan
notification
Cert expiry warning — site ingress cert reaches 30d threshold on 2026-08-19; renewal workflow available on-site
notification
0.1.91 available — release notes + compat matrix (site is on 0.1.88 LTS; direct upgrade path verified)
notification
CVE digest — 0 critical / 2 high affecting 0.1.88 images · both fixed in 0.1.91
plan
Restore-test plan — 18d since last on-site restore test · plan + verification criteria ship in the bundle; the site operator approves locally
Air-gapped sites get the same nudges connected sites get — they just travel by bundle. Decisions always happen on-site, by the site's own operators.