On this page

Verifying releases

Every sgl release is built by the Release workflow in .github/workflows/release.yml, from a v* tag, on GitHub-hosted runners. Each GitHub release carries, for every platform archive (sgl-<version>-<os>-<arch>.tar.gz, or .zip for Windows):

FileWhat it is
<archive>.sigA keyless cosign signature.
<archive>.certThe signing certificate, issued by Sigstore to the release workflow.
<archive>.sbom.cdx.json, <archive>.sbom.spdx.jsonSoftware bills of materials (CycloneDX and SPDX), generated by syft.
checksums-sha256.txtSHA-256 digests of every archive.

Inside each archive, SHA256SUMS lists the digest of the sgl binary, and THIRD-PARTY-NOTICES.txt holds the licences of every dependency compiled in.

Download the archive, checksum file, signature and certificate from the selected release into one directory. The examples below use the filename form for v0.0.0-alpha.1 on linux/amd64; substitute an actually published tag and your platform. You need sha256sum, cosign and the GitHub CLI for these checks.

1. Check the digest

sha256sum --check --ignore-missing checksums-sha256.txt

2. Check the signature

The certificate must name the release workflow of this repository, at the tag you downloaded, and Sigstore must have issued it to GitHub Actions:

cosign verify-blob \
  --certificate sgl-0.0.0-alpha.1-linux-amd64.tar.gz.cert \
  --signature sgl-0.0.0-alpha.1-linux-amd64.tar.gz.sig \
  --certificate-identity "https://github.com/piko-sh/seagull/.github/workflows/release.yml@refs/tags/v0.0.0-alpha.1" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  sgl-0.0.0-alpha.1-linux-amd64.tar.gz

Verified OK means the archive is byte-for-byte what the workflow signed.

3. Check the build provenance

The workflow also records a SLSA build provenance attestation for every archive. With the GitHub CLI:

gh attestation verify sgl-0.0.0-alpha.1-linux-amd64.tar.gz --repo piko-sh/seagull

This confirms which commit, workflow and runner produced the archive.

4. Check the binary

After unpacking:

sha256sum --check SHA256SUMS
./sgl version

sgl version prints the version the binary was built as; it must match the tag.

Installing with Go

go install seagull.sh/seagull/cmd/[email protected] and go get -tool build from source. The Go checksum database (sum.golang.org) verifies the module contents against the first download anyone made, so a tag cannot be changed after release without the mismatch being reported.