sallyport
v0.1.0
Published
Staged npm releases for GitHub Actions, without publishing tokens.
Maintainers
Readme
Start
npx sallyport init --strict
npx sallyport checkinit writes a caller workflow pinned to the installed sallyport commit. check
audits the release setup without changing it.
Use check --remote to audit GitHub and npm posture. Missing proof is
UNVERIFIED, never PASS.
Model
signed tag → pack → seal → smoke exact bytes → stage with OIDC
→ approve with 2FA → verify → immutable GitHub ReleaseCI can stage a package. It cannot publish one. sallyport finishes only after the registry tarball matches the staged candidate byte for byte.
No service, account, daemon, database, npm token, or runtime dependency.
Contract
Your package provides two scripts:
release:checkvalidates the tagged source.release:smoketests the exact tarball inSALLYPORT_TARBALL.
See the Protocol for the complete contract.
Release
Push a signed version tag:
git tag --sign v0.2.0 -m "package v0.2.0"
git push origin v0.2.0Approve the npm stage with maintainer 2FA, then finalize its candidate run:
npm stage approve <stage-id>
gh workflow run sallyport.yml -f candidate_run_id=<run-id>Docs
Setup · Protocol · Architecture · Recovery · Threat model · Releasing sallyport · Security
Support
Public, single-package npm repositories on GitHub-hosted Linux runners. Running
the CLI requires Node 22.18.0 or newer and a root package-lock.json. Release
workflows use the exact Node 24.19.0 / npm 11.17.0 toolchain.
Development
npm ci
npm run release:checkLicense
MIT
