hull registry pull
Download a hull package from an OCI reference, optionally verifying its cosign signature first.
When to use it
- To fetch a package that was pushed with
hull registry push. - To require a valid cosign signature before the artifact ever touches disk —
supply
--cosign-keyor the keyless--cosign-identity+--cosign-issuer. - When you need the OCI-only transport flags (
--plain-http,--insecure-skip-tls-verify) that the generalhull pulldoes not expose.
What happens
- If any cosign flag is set, hull verifies the signature on
<ref>first. Verification is fail-closed: an unsigned or wrongly-signed artifact is not pulled, andcosign signature verified for <ref>prints only on success. - Uses the credentials you stored with
hull loginfor the host in<ref>. - Downloads the artifact and writes it as a
.hull.tgzarchive into--destination(default the current directory). - Prints
Pulled <ref> to <path>naming the file that landed on disk.
Usage
hull registry pull <ref>
<ref> is an oci://… reference including the :tag that selects the
version.
Flags
| Flag | Type | Default | Description |
|---|---|---|---|
-d, --destination |
string | . |
Directory the downloaded .hull.tgz is written to. |
--cosign-key |
string | ”” | Verify the artifact’s cosign signature with this public key before pulling (key-based). |
--cosign-identity |
string | ”” | Keyless cosign: require this certificate identity. Use with --cosign-issuer. |
--cosign-issuer |
string | ”” | Keyless cosign: require this certificate OIDC issuer. Use with --cosign-identity. |
--plain-http |
bool | false | Talk to the registry over plaintext HTTP instead of HTTPS. |
--insecure-skip-tls-verify |
bool | false | Keep HTTPS but skip certificate validation. |
Global flags --oci-plain-http, --oci-insecure-skip-tls-verify, and
--allow-plaintext-auth are inherited from hull.
Worked example
You want the signed 1.0.0 package, and you refuse to accept it unless the signature checks out.
INPUT — keyless verification, saving into ./pulled:
hull registry pull oci://ghcr.io/example/charts/my-app:1.0.0 \
--cosign-identity 'https://github.com/example/ci/.github/workflows/release.yml@refs/heads/main' \
--cosign-issuer 'https://token.actions.githubusercontent.com' \
-d ./pulled
OUTPUT:
cosign signature verified for oci://ghcr.io/example/charts/my-app:1.0.0
Pulled oci://ghcr.io/example/charts/my-app:1.0.0 to ./pulled/my-app-1.0.0.hull.tgz
RESULT: ./pulled/my-app-1.0.0.hull.tgz is on disk, and it is guaranteed
signed by the expected identity. Without the cosign flags the pull runs the
same way, minus the first line:
hull registry pull oci://ghcr.io/example/charts/my-app:1.0.0 -d ./pulled
Pulled oci://ghcr.io/example/charts/my-app:1.0.0 to ./pulled/my-app-1.0.0.hull.tgz
See also
login— store the credentials this command usesregistry push— upload a packagepull— general pull (OCI or HTTP repo) with version resolutioninstall— install a package from a reference