Build and verify a digest-bound Galileo On-Prem air-gap supply-chain bundle covering Helm charts, galileoctl, every ordinary/init/hook/job/test image, OCI archives, model bundles, architectures, private-registry mappings, scanning evidence, and no-egress endpoints, while surfacing explicit model/runtime and endpoint-rewrite evidence gates. Use when preparing, transferring, mirroring, upgrading, or auditing Galileo for an offline Kubernetes cluster.
Installs into .claude/skills of the current project.
Are you the author of Galileo On Prem Air Gap Setup?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chambear2809-galileo-on-prem-air-gap-setup)
---
name: galileo-on-prem-air-gap-setup
description: >-
Build and verify a digest-bound Galileo On-Prem air-gap supply-chain bundle
covering Helm charts, galileoctl, every ordinary/init/hook/job/test image,
OCI archives, model bundles, architectures, private-registry mappings,
scanning evidence, and no-egress endpoints, while surfacing explicit
model/runtime and endpoint-rewrite evidence gates. Use when preparing,
transferring, mirroring, upgrading, or auditing Galileo for an offline Kubernetes cluster.
compatibility: "No direct Splunk Platform runtime dependency. This workflow can be used alongside Splunk Cloud Platform 10.5.2605 through its documented external APIs or handoffs."
metadata:
splunk_cloud_10_5: "not-applicable"
compatibility_verified: "2026-08-20"
---
# Galileo On-Prem Air-Gap Setup
## Prerequisites
- Obtain the CSE-provided release image manifest, exact chart archives,
`galileoctl` artifact, and any offline Wizard/Luna model bundles.
- Run the canonical Stack preflight first and retain its private, bundle-bound
rendered-image and rendered-endpoint evidence; static archive IDs or a
caller-authored endpoint list are not accepted as runtime proof.
- Configure that connected seed render with the final digest-pinned internal
mirror references before the registry contains them. The air-gap assembler
maps each rendered mirror digest back to a distinct CSE/vendor source archive;
it never treats source and mirror names as interchangeable.
- For every optional child classified `standalone`, run its read-only preflight
with both `--image-evidence-file` and `--endpoint-evidence-file`, and retain
the exact immutable child bundle.
- Use a connected staging host for acquisition/scanning and an isolated transfer
path into a registry reachable by the cluster.
- Resolve every image to an immutable OCI digest and collect every target
architecture. Tag-only inventories are not completion evidence.
- Allocate approximately 50–60 GB or the release-specific measured total in the
private registry and transfer area.
## Workflow Overview
```text
+-- CSE manifest --+ -> +-- Pull/scan/digest/arch --+ -> +-- Verify transfer bundle --+
-> +-- Registry handoff --+
-> +-- No-egress proof --+
```
## When to Activate
- Prepare a first Galileo install or upgrade with no cluster internet access.
- Audit private-registry completeness, architecture, digest, or scan evidence.
- Transfer Galileo charts, images, CLI, models, hooks, and test dependencies.
- Verify that rendered runtime endpoints do not require public egress.
- Diagnose `ImagePullBackOff`, missing bootstrap images, or mutable tag drift.
## Required Intake
Ask for the Galileo instance console URL and record the exact value, for example
`https://console.demo-v2.galileocloud.io/`. Pass it with
`--galileo-console-url`; this records the intended deployment without contacting
the instance.
Collect the release ID, target architectures, private registry, exact artifacts
and SHA-256 values, digest-resolved image/OCI mappings, image use classification,
scan attestations, model archives, exact Stack/child endpoint evidence, internal allowlist,
transfer medium policy, and CSE approval. Keep registry credentials outside this
skill and supply them only within the approved operator-controlled push session.
## Supply-Chain Rules
1. Require local regular current-user-owned single-link artifacts. Reject
symlinks, hardlinks, special files, unsafe permissions, path traversal,
duplicate archive members, PAX path overrides, oversized expansion, and
digest drift.
2. Require every image to have a source reference, source digest, mirror
reference, expected mirror digest, OCI archive, architectures, and one or
more uses: `runtime`, `init`, `hook`, `job`, `test`, or `model`.
3. Reject `latest`, tag-only proof, source/mirror digest mismatch, missing target
architectures, source/mirror role collapse (including the same registry
authority), and any chart-discovered image absent from the CSE manifest.
Scan attestations must be canonical duplicate-free JSON and bind the exact
vendor source subject plus digest with a real boolean pass result.
4. Include `galileoctl`, sequencing `kubectl`, database bootstrap clients,
migration/hook/test images, Agent Control, Luna backend/UI/training/data-gen,
Wizard/Triton and offline models whenever enabled.
5. Classify Agent Control and Luna as `disabled`, `umbrella`, or `standalone`.
Stack evidence owns umbrella images; every standalone child requires its own
canonical evidence. Require exact union equality—no extras or omissions.
Seed evidence must equal manifest `mirror` refs, while acquisition
provenance remains in `source`; require `mirror_digest == source_digest`.
Derive architectures only from descriptor/config platform pairs whose exact
Linux OS, architecture, and optional variant agree through a digest-, size-,
and media-type-closed OCI graph. Reject missing, duplicate, unknown,
mismatched, or unreferenced OCI evidence.
6. Keep archive verification and registry push separate. `--push-registry` is a
permanent fail-closed sentinel. Hand the exact digest inventory and CSE
approval to an operator-controlled session that rejects tag overwrite.
7. Never auto-upload artifacts, rewrite charts, create pull Secrets, or touch
Kubernetes. Hand the verified contract to the stack/service skills.
8. A no-egress pass requires the exact union of target/chart/input/render-bound
Stack and standalone-child host-only endpoint evidence to be internal. The
verifier also independently scans embedded non-secret values and chart
templates and rejects unexplained findings. It must
block public registries, Let’s Encrypt, SendGrid, Sentry/Logz, central feature
flags, public model APIs, telemetry, and package repositories.
Host-only observations do not prove endpoint rewrites. Until Stack emits
`galileo-on-prem-stack-endpoint-rewrite-evidence/v1`, no-egress completion
fails as `endpoint_rewrite_evidence_missing`.
9. Offline model archives remain transfer artifacts, not runtime proof. Until
Stack emits `galileo-on-prem-stack-model-artifact-evidence/v1` binding the
exact archive checksum to rendered mounts/config and checksum-verifier
behavior, model completion fails as `stack_model_evidence_missing`.
10. Reject Helm `lookup`, `tpl`, root `.Files`, `.Capabilities`, `.Release`,
random/UUID/clock, environment, DNS, crypto, and indirect root access
recursively in the parent chart and packaged dependencies; those constructs
make exact offline render/image/endpoint evidence impossible to prove.
Read [reference.md](reference.md), [manifest-contract.md](references/manifest-contract.md),
[registry-and-transfer.md](references/registry-and-transfer.md), and
[source-ledger.md](references/source-ledger.md) before approving a transfer.
## Commands
```bash
bash skills/galileo-on-prem-air-gap-setup/scripts/setup.sh --help
```
```bash
bash skills/galileo-on-prem-air-gap-setup/scripts/setup.sh \
--render --spec ./air-gap.local.yaml \
--galileo-console-url "https://console.demo-v2.galileocloud.io/" \
--output-dir ./galileo-on-prem-rendered/air-gap
```
```bash
bash skills/galileo-on-prem-air-gap-setup/scripts/setup.sh \
--verify --bundle ./galileo-on-prem-rendered/air-gap \
--galileo-console-url "https://console.demo-v2.galileocloud.io/"
```
Registry push is an explicit non-mutating handoff sentinel:
```bash
bash skills/galileo-on-prem-air-gap-setup/scripts/setup.sh \
--push-registry
```
The sentinel fails before reading a bundle, credential, approval, or result
path. The verified bundle metadata is the handoff packet for the external
Galileo/CSE operator session.
## Completion Gate
Completion requires exact hashes for every transfer artifact, safe archive
structure, all chart inventory images classified, all target architectures in
every image, passing scan attestations, verified source/mirror digest equality,
operator-supplied post-push registry inspection, and `unapproved_endpoints=[]`
plus no open evidence gates in the no-egress report. It also requires the exact Stack-plus-standalone-child image
union and the Stack seed/final equality gate. Static verification does not claim
a deployment or GPU test.
## Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
| Image inventory mismatch | Init/hook/test/bootstrap image omitted | Regenerate inventory from the exact charts and CSE manifest |
| Architecture failure | Archive lacks a node architecture | Acquire the correct multi-arch image or constrain scheduling |
| Digest failure | Tag moved or transfer was altered | Re-pull by digest and recreate the OCI archive |
| Push blocked | Registry writes are handoff-only without an entitled live fixture | Use the exact bundle/digests in a CSE-reviewed operator session; reject tag overwrite |
| Model evidence blocked | Stack lacks rendered model mount/config/checksum-verifier proof | Keep `stack_model_evidence_missing` open until the versioned Stack evidence exists |
| Endpoint closure blocked | Host-only evidence cannot bind source-to-mirror scheme/port rewrites | Keep `endpoint_rewrite_evidence_missing` open until the versioned Stack evidence exists |
| No-egress failure | Runtime still names a public endpoint | Disable the feature or provide an approved internal endpoint |
| Unsafe archive | Traversal, links, duplicates, PAX override, or expansion limit | Reject it and obtain a clean vendor artifact |