This document describes how to create a new release of the agentic-workflow-firewall (awf).
- Ability to trigger workflows (Actions tab or
ghCLI)
From the CLI:
# Patch release (0.1.0 -> 0.1.1)
gh workflow run release.yml -f bump=patch
# Minor release (0.1.1 -> 0.2.0)
gh workflow run release.yml -f bump=minor
# Major release (0.2.0 -> 1.0.0)
gh workflow run release.yml -f bump=majorOr from the GitHub UI: go to Actions > Release > Run workflow, select the bump type, and click Run workflow.
The workflow will:
- Bump the version in
package.json - Commit the version change and create a git tag
- Build and push Docker images to GHCR
- Create Linux x64 and arm64 binaries
- Create NPM tarball and checksums
- Publish the GitHub Release with auto-generated changelog
Once the workflow completes:
- Go to Releases page
- Verify the new release is published with:
- Linux x64 binary (
awf-linux-x64) - Linux arm64 binary (
awf-linux-arm64) - NPM tarball (
awf.tgz) - Checksums file (
checksums.txt) - Installation instructions with GHCR image references
- Linux x64 binary (
- Go to Packages page (in repository)
- Verify Docker images are published:
squid:<version>andsquid:latestagent:<version>andagent:latestapi-proxy:<version>andapi-proxy:latestagent-act:<version>andagent-act:latest(GitHub Actions parity image)
Each release includes:
awf-linux-x64- Linux x64 standalone executableawf-linux-arm64- Linux arm64 standalone executableawf.tgz- NPM package tarball (alternative installation method)checksums.txt- SHA256 checksums for all files
Docker images are published to ghcr.io/github/gh-aw-firewall:
squid:<version>andsquid:latest- Squid proxy containeragent:<version>andagent:latest- Agent execution environment (minimal, ~200MB)api-proxy:<version>andapi-proxy:latest- API proxy sidecar for credential isolationagent-act:<version>andagent-act:latest- Agent with GitHub Actions parity (~2GB)
These images are automatically pulled by the CLI when running commands.
The agent-act image is used when running with --agent-image act for workflows that need closer parity with GitHub Actions runner environments.
Before releasing, you can test the build process locally:
# Install pkg globally
npm install -g pkg
# Build TypeScript
npm run build
# Create Linux binary
mkdir -p release
pkg . --targets node18-linux-x64 --output release/awf
# Test the binary (requires Docker images - see below)
./release/awf-linux --help# Build images locally
docker build -t awf-test/squid:local ./containers/squid
docker build -t awf-test/agent:local ./containers/agent
docker build -t awf-test/api-proxy:local ./containers/api-proxy
# Test with local images
sudo ./dist/cli.js \
--build-local \
--allow-domains github.com \
'curl https://github.com'
# Or test with existing GHCR images
sudo ./dist/cli.js \
--allow-domains github.com \
'curl https://github.com'- Check the Actions tab for error logs
- Common issues:
- Build errors: Check TypeScript compilation locally with
npm run build - Docker build errors: Test image builds locally in
containers/directories - GHCR push errors: Ensure
packages: writepermission is granted - Permission errors: Ensure repository has
contents: writepermission
- Build errors: Check TypeScript compilation locally with
- Test locally before release
- Ensure all dependencies are bundled (check
pkg.assetsin package.json) - For dynamic requires, you may need to mark files/directories in
pkg.assets
If users report that Docker images can't be pulled:
- Check Packages page to verify images were published
- Verify image visibility is set to Public (not Private)
- Check image tags match what the CLI expects (version + latest)
- Users can use
--build-localas a workaround while troubleshooting
To make packages public:
- Go to repository Packages page
- Click on the package (squid, agent, api-proxy, or agent-act)
- Go to Package settings
- Change visibility to Public
If you accidentally released the wrong version:
- Delete the tag remotely:
git push origin :refs/tags/v0.1.0 - Delete the release from GitHub UI
- Delete or retag the GHCR images if needed
- Re-run the workflow with the correct bump type
Pre-release versions are not currently supported via the workflow dispatch input. To create a pre-release, manually bump the version locally and push:
npm version prerelease --preid=alpha # 0.1.0 -> 0.1.1-alpha.0
git push origin main --tagsThe release workflow can then be triggered manually (it will read the pre-release version from package.json and skip the bump step since the tag already exists).
For backporting fixes to older major versions:
- Create a maintenance branch:
git checkout -b v0.x - Cherry-pick or apply fixes
- Push branch:
git push origin v0.x - Run the release workflow on the maintenance branch (select the
v0.xbranch in the UI)