Skip to content

Install

rowshape is a single static Go binary. There is no runtime to install and no services to run. Every channel delivers the same binary.

Homebrew

Terminal window
brew install rowshape/tap/rowshape
rowshape --help

go install

Terminal window
go install github.com/rowshape/rowshape@latest

Installs into $(go env GOPATH)/bin; make sure that is on your PATH.

npm / npx

Terminal window
npx rowshape --help
# or add it to a project:
npm install --save-dev rowshape

Direct download — darwin_arm64 for Apple silicon, darwin_amd64 for Intel:

Terminal window
VERSION=1.2.3 # the release you want, without the leading v
curl -sSLO "https://github.com/rowshape/rowshape/releases/download/v${VERSION}/rowshape_${VERSION}_darwin_arm64.tar.gz"
tar -xzf "rowshape_${VERSION}_darwin_arm64.tar.gz"
./rowshape --help

Each release publishes six archives, named by .goreleaser.yaml as rowshape_<version>_<os>_<arch> — the version without its leading v, raw GOOS and GOARCH:

Release assets for one version
rowshape_<version>_darwin_amd64.tar.gz
rowshape_<version>_darwin_arm64.tar.gz
rowshape_<version>_linux_amd64.tar.gz
rowshape_<version>_linux_arm64.tar.gz
rowshape_<version>_windows_amd64.zip
rowshape_<version>_windows_arm64.zip

Each archive holds the rowshape binary, LICENSE and README.md. Alongside them: checksums.txt, its cosign signature and certificate, and one SPDX SBOM per archive.

You do not have to verify by hand. The GitHub Action and the npm installer both check the archive against checksums.txt and refuse to run a binary that does not match; the Action can also require the cosign signature — see its supply-chain verification inputs, verify and verify-signature.

Verify a manual download yourself

Check the signature over checksums.txt first — it proves who produced the file — then check your archive against it:

Terminal window
# 1. The signature is keyless, so the certificate identity must be pinned.
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
--certificate-identity-regexp "^https://github.com/rowshape/rowshape/\.github/workflows/.+@refs/tags/" \
checksums.txt
# 2. Now that checksums.txt is trusted, check the archive against it.
sha256sum --ignore-missing -c checksums.txt

Order matters: verifying the archive against an unverified checksums.txt proves only that the two files agree, which an attacker who replaced both can arrange. The identity flags are required — without them cosign will not verify a keyless signature at all.

The binary is a single static executable with a deliberately small dependency set — half the reason rowshape is written in Go.

Quickstart: pull a fixture, validate a migration that fails on real data, fix it, and get a PASS.