Skip to content

Repository Checkpoints

A repository checkpoint is a portable, immutable archive of one repository sequence. It is useful for durable exports and for verifying a snapshot outside a running WarmHub service.

Checkpoint status, latest, access, and download commands require unrestricted repo:read plus repo:checkpoint-read. Generate and retry also require repo:checkpoint-generate; repo:admin remains compatible for those operations but does not substitute for repo:checkpoint-read. Checkpoint commands do not treat a public repository as an anonymous export surface. Newly issued owner/admin role PATs include the narrow checkpoint scopes. Any existing personal access token (PAT) missing repo:checkpoint-read must be reissued to use checkpoint commands.

Terminal window
wh repo checkpoint generate acme/widgets --wait
wh repo checkpoint status acme/widgets --checkpoint <checkpoint-id>
wh repo checkpoint latest acme/widgets
wh repo checkpoint retry acme/widgets --checkpoint <checkpoint-id> --wait
CommandPurpose
wh repo checkpoint generate [org/repo] [--at-least-repo-seq n] [--wait]Request a checkpoint at the current repository sequence, or no earlier than n. --wait polls until it reaches a terminal state.
wh repo checkpoint status [org/repo] (--checkpoint id | --repo-seq n)Show the lifecycle status for one checkpoint.
wh repo checkpoint latest [org/repo]Show the latest completed checkpoint, or report that none exists.
wh repo checkpoint retry [org/repo] --checkpoint id [--wait]Retry a failed checkpoint.

status requires exactly one selector. A checkpoint that does not exist returns NOT_FOUND; that result does not reveal data to callers without checkpoint authority.

Use access when another process should fetch an artifact directly:

Terminal window
wh repo checkpoint access acme/widgets --latest --archive
wh repo checkpoint access acme/widgets \
--checkpoint <checkpoint-id> --manifest --json

Like download, access requires exactly one checkpoint selector (--latest, --checkpoint, or --repo-seq) and one artifact selector (--archive, --manifest, or --chunk). Pretty output includes the signed URL, expiration, checkpoint identity, byte length, SHA-256, and content type. Use --json for structured output.

The URL is a short-lived bearer credential. Avoid logs and shell history that may retain command output, and do not share the URL.

Choose exactly one checkpoint selector and one artifact selector:

Terminal window
wh repo checkpoint download acme/widgets \
--latest --archive --output checkpoint.zip
wh repo checkpoint download acme/widgets \
--checkpoint <checkpoint-id> --manifest --output repository-checkpoint.json
wh repo checkpoint download acme/widgets \
--repo-seq 42 --chunk records/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef/part-000000.jsonl --output chunk.ndjson
SelectorMeaning
--latestThe latest completed checkpoint.
--checkpoint idA specific checkpoint identifier.
--repo-seq nThe checkpoint at one repository sequence.
ArtifactMeaning
--archiveThe complete checkpoint archive.
--manifestThe checkpoint manifest.
--chunk pathOne manifest-declared checkpoint chunk.

--output PATH creates a new file and refuses to overwrite an existing path. Use --output - only with the default --format pretty to stream raw bytes to stdout. The CLI verifies the downloaded byte count and SHA-256 before publishing a file.

The control-plane request returns a short-lived signed URL. The subsequent object download is a raw signed GET; it intentionally has no WarmHub Authorization header. Treat that URL as a credential and avoid logging or sharing it.

Terminal window
wh repo checkpoint verify checkpoint.zip

verify reads only the archive on disk. It does not resolve a CLI profile, call WarmHub, or fetch any network resource, so it works in disconnected environments.

For programmatic lifecycle control, see the repository checkpoint SDK reference.