airelease creates GitHub releases from merged pull requests and can ask OpenRouter (or custom endpoints) to suggest a semantic version and release title options.
- Interactive release creation flow
- Auto-discovers PRs since the latest release
- Uses
gh release createto publish - Global config in
~/.airelease/config.json - Per-repo configurable base branch
- Configurable OpenRouter model or custom endpoint
- Dry run mode to preview changes
gitgh(authenticated withgh auth login)- Go 1.22+
From this repository:
go install .Ensure your Go bin path is in PATH:
export PATH="$(go env GOPATH)/bin:$PATH"- Set your OpenRouter API key:
airelease config openrouter-api-key <your-api-key>- Optional: set model globally:
airelease config model qwen/qwen3.5-flash-02-23- Optional: set base branch for current repo:
airelease config base develop- Run it inside a git repository:
airelease- Set your custom endpoint:
airelease config model-url "https://your-endpoint.com/v1"- Add required headers (e.g., Authorization):
airelease config model-header "Authorization: Bearer your-token"- Set your model name:
airelease config model "your-model-name"- Run it:
aireleaseDry Run Mode
Test without creating a release:
airelease --dry-runairelease # Create a GitHub release from merged PRs
airelease --dry-run # Preview release without creating itairelease config base <branch> # Default base branch for current repo
airelease config openrouter-api-key <api-key> # Set OpenRouter API key
airelease config openrouter <true|false> # Enable/disable OpenRouter mode
airelease config model <model-name> # Set model nameairelease config model-url <url> # Set custom endpoint (full path)
airelease config model-header <key:value> # Add custom header
airelease config model-header remove <key> # Remove a header
airelease config model-header list # List all custom headersNote: When using model-url or model-header, OpenRouter mode is automatically disabled. The tool will append /chat/completions to the base URL if not present.
- If OpenRouter is not configured,
aireleasestill works without AI suggestions. - API key is stored in
~/.airelease/config.jsonwith file mode0600. - Custom endpoints are supported with the
model-urlandmodel-headerconfig commands. dry-runmode previews the release without actually creating it.