Local installation

Cargo

cargo install ferrflow

npm

npm install -g @ferrlabs/ferrflow
# or as a dev dependency
npm install -D @ferrlabs/ferrflow

WASM (browser)

npm install @ferrlabs/ferrflow-wasm

Use FerrFlow directly in the browser — parse commits, compute version bumps, and generate changelogs client-side without a backend.

Binary

Download a pre-built binary from Releases:

# Linux x86_64
curl -L https://github.com/FerrLabs/FerrFlow/releases/latest/download/ferrflow-linux-x64.tar.gz | tar xz
sudo mv ferrflow /usr/local/bin/

Docker

docker run --rm -v $(pwd):/repo ghcr.io/ferrlabs/ferrflow:latest check

CI installation

The recommended way to use FerrFlow in CI is the GitHub Action — no installation step needed:

- uses: FerrLabs/ferrflow@v5
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

See GitHub Actions and GitLab CI for complete examples.

Verify

ferrflow --version

Upgrading from v4

If you're following the documented GitHub Actions / GitLab CI setup (GITHUB_TOKEN/CI_JOB_TOKEN as an environment variable), no changes are required — just bump the action pin to FerrLabs/ferrflow@v5 and the binary to v5.x.

The only breaking change in v5.0 is internal: FerrFlow no longer injects tokens into the remote URL when pushing. It now uses the standard git credential-helper protocol (GIT_ASKPASS). This is invisible to anyone using the recommended setup, but if you had a custom workflow that relied on URL-injected tokens — for example, a self-hosted runner with a pre-seeded https://x-access-token:$TOKEN@github.com/... remote — switch to setting GITHUB_TOKEN (or FERRFLOW_TOKEN) as an environment variable instead and FerrFlow handles the rest.

Releases since v5.2 are signed via Sigstore and ship a CycloneDX SBOM — see Verifying releases.