OpenSwarm releases use one normal path: Build TUI Binaries builds the required assets, publishes the GitHub Release, then publishes @vrsen/openswarm to npm in the same workflow run. The release tag, npm package version, lockfile version, and Python project metadata must use the same semver version.
- Source version:
X.Y.ZorX.Y.Z-prereleaseinpackage.json - Matching metadata:
package-lock.jsonandpyproject.toml - GitHub tag format:
vX.Y.ZorvX.Y.Z-prerelease - GitHub release assets:
agentswarm-darwin-arm64agentswarm-darwin-x64agentswarm-linux-x64agentswarm-windows-x64.exe
- Bump
package.json,package-lock.json, andpyproject.tomlto the same version. - Merge the version bump to
main. - Run the
Build TUI Binariesworkflow from themainbranch in GitHub Actions. Leaveversionblank to usepackage.json, or pass the exact version without thevprefix. - Confirm the workflow creates the matching GitHub Release with all required binary assets.
- Let the downstream npm publish job in the same workflow publish
@vrsen/openswarmfrom the release tag. Stable versions publish tolatest; prereleases publish to the prerelease label such asrc.
Pushing a matching version tag also runs the binary release workflow. The manual workflow is the preferred path because it builds assets, publishes the GitHub Release, and publishes npm in one run.
GitHub releases created with ${{ github.token }} do not start separate on: release workflows. Fallback Publish npm on Release exists only for releases that are published manually, externally, or through an API token that can trigger release workflows. It is not the normal release path.
- The binary release workflow fails if the tag/input version does not match
package.json,package-lock.json, andpyproject.toml. - The npm publish job fails if
NPM_TOKENis missing, versions do not match, or the GitHub Release is missing any required TUI binary asset. - The fallback npm publish workflow runs the same key checks for manually or externally published releases, including prereleases.
- The npm package uses
publishConfig.access=publicso scoped publishes do not depend on CLI flags alone.