GitHub Releases
Every stable release on the releases page ships:
- Archives —
datamitsu_<version>_<os>_<arch>.tar.gz(Linux, macOS) and.zip(Windows) foramd64andarm64 - Linux packages —
.deb,.rpm, and.apk checksums.txt— SHA-256 of every asset, pluschecksums.txt.sigstore.json, its keyless cosign signature- SBOMs — one per archive
datamitsu_parsers_<version>.wasm— the parser module, downloaded by the CLI on demand and verified against the SHA-256 the config pins (the valuechecksums.txtrecords). This asset is one of two channels: the same module is also published as an OCI artifact atghcr.io/datamitsu/datamitsu-parsers, which a config can pin instead — see Output Parsersdatamitsu-<version>.vsix— the VS Code extension for manual installs
Verify the release manifest
Obtain the SHA-256 values for the checksum manifest and its Sigstore bundle from an independently authenticated release announcement or mirror manifest. If either value is unavailable, stop: do not download or process that artifact. Verify both files before asking Cosign to authenticate the manifest:
VERSION=0.2.1
CHECKSUMS_SHA256="<trusted-sha256-for-checksums.txt>"
SIGSTORE_BUNDLE_SHA256="<trusted-sha256-for-checksums.txt.sigstore.json>"
curl --fail --location --remote-name \
"https://github.com/datamitsu/datamitsu/releases/download/v${VERSION}/checksums.txt"
curl --fail --location --remote-name \
"https://github.com/datamitsu/datamitsu/releases/download/v${VERSION}/checksums.txt.sigstore.json"
printf '%s %s\n' "$CHECKSUMS_SHA256" checksums.txt | sha256sum --check -
printf '%s %s\n' "$SIGSTORE_BUNDLE_SHA256" checksums.txt.sigstore.json | sha256sum --check -
cosign verify-blob \
--bundle checksums.txt.sigstore.json \
--certificate-identity-regexp 'https://github.com/datamitsu/datamitsu/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
Binary archive
Select the asset and extract its expected SHA-256 from the authenticated manifest before downloading it. Verify the bytes before extraction:
ASSET="datamitsu_${VERSION}_linux_amd64.tar.gz"
EXPECTED_SHA256=$(awk -v asset="$ASSET" '$2 == asset { print $1 }' checksums.txt)
test "${#EXPECTED_SHA256}" -eq 64
curl --fail --location --remote-name \
"https://github.com/datamitsu/datamitsu/releases/download/v${VERSION}/${ASSET}"
printf '%s %s\n' "$EXPECTED_SHA256" "$ASSET" | sha256sum --check -
tar -xzf "$ASSET"
sudo install -m 0755 datamitsu /usr/local/bin/datamitsu
Linux packages
Download the selected package only after obtaining its SHA-256 from the verified
manifest above, and run the same sha256sum --check - step before installing it:
# Debian / Ubuntu
sudo dpkg -i datamitsu_${VERSION}_linux_amd64.deb
# Fedora / RHEL
sudo rpm -i datamitsu_${VERSION}_linux_amd64.rpm
# Alpine
sudo apk add --allow-untrusted datamitsu_${VERSION}_linux_amd64.apk
Unstable prereleases
Unstable builds are dispatched by hand (Actions > Release) and the GitHub
prerelease is an opt-in checkbox on that form, off by default. When it is
ticked, the prerelease carries the archives, checksums.txt with its cosign
bundle, the .wasm parser module built from that commit, and
parsers-oci.json — the registry pin (ref, digest, sha256) for that same
module, which every unstable build publishes to
ghcr.io/datamitsu/datamitsu-parsers-unstable. These builds exist for testing
something that has not shipped yet; install one only for that.
Verify provenance
Release artifacts also carry GitHub build provenance attestations:
gh attestation verify datamitsu_${VERSION}_linux_amd64.tar.gz --repo datamitsu/datamitsu
See Supply Chain Security for the full verification model.