Contributing

Release

Overview

The taxiway CLI is released through GitHub Releases produced by GoReleaser. Each archive contains the taxiway binary and the matching runtime assets for the same version:

  • infra/
  • agents/
  • orchestrators/
  • infra/observability/langfuse.compose.yml
  • infra/gateway/litellm/models.yaml

The installer replaces the runtime assets in ~/.taxiway/runtime/ and installs the binary to $HOME/.local/bin by default.

Cut a Release

  1. Ensure main is green and ready.

  2. Create and push a semver tag:

    git tag v0.1.0
    git push origin v0.1.0
    
  3. The Release workflow runs core checks and end-to-end tests, then runs GoReleaser and publishes release assets.

  4. Verify the release contains:

    • one archive per supported platform;
    • checksums.txt;
    • install.sh;
    • release notes generated by GoReleaser.

GoReleaser builds release notes from Conventional Commit-style messages. Use feat: for user-facing capabilities, fix: for bug fixes, and cleanup-style messages such as cleanup: for simplification or removal work. See Development.

Supported Platforms

  • darwin/amd64
  • darwin/arm64
  • linux/amd64
  • linux/arm64

Windows is out of scope for the first standalone release.

Installer

Latest release:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/latest/download/install.sh | sh

Explicit release:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/download/v0.1.0/install.sh | sh

Explicit binary directory:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/latest/download/install.sh | sh -s -- --bin-dir "$HOME/bin"

The installer verifies the archive checksum before installing. It fails instead of silently falling back when the selected binary directory is not writable.

Local Checks

Check GoReleaser configuration:

goreleaser check

Create local snapshot artifacts:

goreleaser release --snapshot --clean

Run against source-tree runtime assets while developing:

TAXIWAY_RUNTIME_DIR=$PWD go run ./cmd/taxiway version