Documentation

Choose a guide for the task you want to do. The CLI can install tools from their signed releases, publishers can add a packslip to an existing release job, and consumer developers can use the format and Rust crate in their own installers or mirrors.

Start here

You want to…Start here
Get the command on your machineInstall the CLI
Install an upstream toolInstall a tool with packslip
Try creating and verifying a manifestGetting started, an offline local walkthrough
Understand how the pieces connectHow packslip fits a release

Published examples

Who is using Packslip lists published signed release manifests from upstream projects and independent publishers.

Publish software

Start by adding the packslip GitHub Action to your release job. The other guides cover what a release needs beyond the action’s defaults.

Install software or build a consumer

Reference

Terms used in these docs

TermMeaning
ProjectThe name a consumer asks for: a host and optional path with no URL scheme, such as github.com/owner/repo or mytool.example.com.
ForgeA code host whose project names also say who is expected to sign: github.com or gitlab.com. A release of github.com/owner/repo is expected to be signed by that repository’s CI, normally one of its workflows.
VendorA project that builds and signs its own releases, as opposed to a repackager, such as a mirror, that signs a document for another vendor’s files.
ConsumerSoftware that verifies or installs releases from their packslips, such as a package manager or a mirror.
ArtifactA release file the statement lists for a consumer to select and download, such as an archive, installer, bare executable, or source tarball. Files that ship for another purpose, such as an SBOM or a man page, are resources; a file that is neither, such as a checksum file, is left out of the statement.
ResourceAn additional item, such as a completion script, man page, skill, or SBOM.
StatementThe JSON document containing digests and release metadata.
BundleA sigstore bundle: a signed statement and its verification material. A release’s bundle is its packslip, or release manifest, published as packslip.sigstore.json (packslip.<subpath>.sigstore.json for one tool of a monorepo, with any / in the subpath written as -). A release list is a bundle too.
TOML manifestThe optional input to packslip create --manifest, usually release.toml. It is not signed or published.
Release listA separate signed document that indexes releases and records mutable metadata such as withdrawals.
Stamping hostA third party, such as a registry or scanning service, that publishes signed release lists of the versions it has checked. A consumer that trusts stamping hosts selects only versions one of them lists, unless the user chose to trust the vendor alone for that project.
Keyless signingSigning with a CI job’s OIDC identity through sigstore. Fulcio issues a short-lived certificate naming the workflow, so there is no long-lived key to manage.
Transparency logRekor, the public log that records sigstore signatures. A key-signed release created with --no-log has no log entry, and consumers must accept that explicitly (verify --allow-unlogged).
PinWhat a consumer holds a project’s releases to: an identity policy (issuer and identity or prefix), a public key, or a signer fingerprint. For a forge project, the consumer also remembers the repository ID of the releases it accepted.
Signer fingerprintps1_ followed by 26 characters, derived from the forge’s issuer and the repository ID, that names the repository a keyless project is signed from. packslip pin prints it, and packslip verify --pin checks a release against it.