Semantic Release Automation Without Node.js
THE NEXT-GEN SEMANTIC RELEASE ENGINE
Semantic Releases.
Fully Automated. Zero Node Tax.
semrel is the uncompromising successor to legacy release tools: a single static Go binary (~12 MB) that parses Conventional Commits, computes SemVer, updates 15+ package ecosystems, generates rich changelogs, and ships supply-chain-attested releases — in seconds instead of 35 minutes.
- ✓ No Node.js, no
node_modules: Eliminates 400+ transitive npm dependencies and 60s CI cold starts. - ✓ 46 Production-Ready Plugins: GitHub/GHES, GitLab, Gitea, Bitbucket, npm, PyPI, Crates, Docker, OCI, Helm, Zig, Flutter, nFPM, Discord, Slack, Teams & more.
- ✓ Reproducible & Air-Gap Ready: Pinned SHA-256 checksums in
.semrel.lockandsemrel plugin restorewith zero outbound network calls. - ✓ No Paywalls, No "Pro" Tier: Monorepo workspaces, Linux packaging, and enterprise features are 100% Open Source forever (Apache 2.0).
$ semrel plugin restore && semrel release
✓ lockfile verified 6 plugins from .semrel.lock (SHA-256 OK)
✓ condition @semrel/condition-github-actions passed (main)
✓ analyzer @semrel/analyzer-conventional 18 commits → minor
→ version v1.8.2 → v1.9.0 (4 contributors, MVP: @alice)
✓ generator @semrel/generator-changelog-md wrote CHANGELOG.md 🤖
✓ pre-tag updater-go + updater-helm + updater-npm
✓ git committed & pushed signed tag v1.9.0 (Cosign v3)
✓ packager @semrel/packager-nfpm built .deb, .rpm, .apk
✓ publisher @semrel/publisher-oci pushed ghcr.io/acme/app:1.9.0
✓ provider @semrel/provider-github released & commented on 7 PRs
✓ hook @semrel/hook-discord + hook-slack notified #releases
🚀 Release v1.9.0 completed in 1.42s!Why Legacy Tools Fall Short of What semrel Delivers
Other tools either force a 350 MB Node.js dependency tree into your container (semantic-release, release-it, changesets), cannot compute SemVer from commits (GoReleaser OSS), or lock enterprise features behind a $3,300/yr paywall.
| Capability / Criterion | 🚀 semrel v0.28.2 | semantic-release v24.x | GoReleaser v2.x OSS/Pro | release-please v17.x | release-it / changesets v17.x / v2.x |
|---|---|---|---|---|---|
| Runtime & Footprint | ✅ ~12 MB Static Go Binary | ❌ Node.js + ~350 MB npm | ✅ ~45 MB Go Binary | ❌ Node.js / GH Action | ❌ Node.js + ~200 MB npm |
| Auto SemVer from Commits | ✅ Conventional + Regex | ✅ Conventional Commits | ❌ Manual Git tag required | ✅ Via Release PR only | ⚠️ Partial / Manual files |
| Scope-Based Bump Rules | ✅ Native (incl. scope: false) | ✅ | ❌ | ❌ | ❌ |
| Air-Gap & Offline CI | ✅ Native via .semrel.lock | ❌ Requires npm network access | ✅ | ❌ Cloud API bound | ❌ Requires npm network access |
| Multi-Language Version Updaters | ✅ 15 Ecosystems (Go, npm, Cargo, PyPI, Helm, Maven, Gradle, NuGet, Composer, Pubspec, Zig, Terraform, Docker, Homebrew, Regex) | ⚠️ JS-centric / 3rd-party | ❌ Go build focus only | ⚠️ Hardcoded updaters | ❌ JS/TS only (package.json) |
| Multi-Registry Publishers & nFPM | ✅ OCI, Docker, npm, PyPI, crates.io, HTTP + .deb/.rpm/.apk | ⚠️ Via npm plugins only | ✅ (Partially Pro) | ❌ No artifact publishers | ⚠️ Primarily npm |
| Git Forges & Self-Hosted | ✅ GitHub, GHES, GitLab, Gitea/Forgejo, Bitbucket, Git | ✅ via plugins | ✅ GitHub, GitLab, Gitea | ❌ GitHub only | ⚠️ GitHub / GitLab |
| Auto PR/MR Release Comments | ✅ GitHub, GitLab, Gitea & Bitbucket (idempotent) | ⚠️ GitHub/GitLab only | ❌ | ⚠️ Release PR only | ❌ |
| AI Disclosure & Contributor MVP | ✅ 🤖 AI-Badges + 🏆 Release MVP + First-Timers | ❌ | ❌ | ❌ | ❌ |
| Supply-Chain Attestation | ✅ Cosign v3 + CycloneDX/SPDX + SLSA L1 | ❌ High npm supply-chain risk | ✅ Cosign + SBOM | ❌ | ❌ |
| Large Repos (460+ Tags) | ⚡ < 90 seconds (concurrent Go) | 🐢 35+ minutes (timeouts) | ⚡ Fast | ⚠️ API rate limits | 🐢 Slow |
| License & Enterprise Cost | ✅ Apache 2.0 · 100% Free | ✅ MIT · Free | 💰 Pro costs $3,300/yr | ✅ Apache 2.0 | ✅ MIT |
ℹ️ Comparison snapshot as of October 2026 (semrel v0.28.2, semantic-release v24.x, GoReleaser v2.x OSS/Pro, release-please v17.x, release-it v17.x, @changesets/cli v2.x) based on each project’s publicly documented default capabilities. If any compared tool has added features since this date, please open an issue or PR so we can update this table.
Engineered for Cloud-Native & Regulated Enterprise Pipelines
From single-binary tools to massive enterprise monorepos with hundreds of services (with zero artificial limits) under NIS2 and DORA mandates — semrel covers the entire release lifecycle without brittle glue scripts.
Conventional Commits & Scopes
Analyses your commit history and automatically computes major, minor, or patch bumps. Includes scope-based bump rules (e.g. deps(major)) and hidden changelog types.
Single Static Go Binary
No Node.js, no npm install, no 400+ transitive packages, and zero V8 cold starts. Runs instantaneously in minimal Alpine containers and hardened CI runners.
Supply-Chain Security by Default
Signed releases with Sigstore Cosign v3 (--bundle), CycloneDX & SPDX SBOMs, SLSA Level 1 provenance, DCO sign-off, and REUSE/SPDX compliance.
Lockfile (.semrel.lock) & Air-Gap
Reproducible plugin versions with cross-platform SHA-256 checksums in .semrel.lock. Cache once — zero outbound network calls during CI release execution (NIS2 / DORA ready).
8 Modular Plugin Categories
Condition, Analyzer, Generator, Updater, Packager (.deb/.rpm/.apk), Publisher (OCI/Docker/npm/PyPI/Crates/HTTP), Provider & Hook — language-agnostic via subprocess contract.
Monorepo Workspace Engine
Multiple independent packages in one repository — each with its own tag series and config. Topological dependency ordering and parallel execution via semrel workspace release.
GHES, GitLab, Gitea & Bitbucket
First-class support for GitHub Enterprise Server (/api/v3 & custom CA), Data Residency (*.ghe.com), GitLab CI job tokens, and automatic PR/MR comments on every release.
AI Disclosure & Contributor MVPs
Automatically detects AI co-author trailers for transparent changelogs and celebrates first-time contributors and the 🏆 Release MVP across Markdown, HTML, and Discord.
Doctor, Commitlint & JSON Schemas
Pre-flight checks via semrel doctor, Git-hook ready semrel commitlint (--commit-msg-file), Sprout env interpolation, and IDE autocomplete via registry.semrel.io.
One Deterministic Lifecycle — 4 Execution Phases, 8 Plugin Roles
Every step is an isolated subprocess binary driven by environment variables (SEMREL_*) and verified via SHA-256 checksums.
CI & Branch Gate
Verifies GitHub Actions/GHES, GitLab CI, CircleCI, Bitbucket, Gitea, or custom shell gates.
SemVer & Contributors
Computes major/minor/patch, scopes, commit hashes & contributor statistics.
Release Notes & AI Audit
Renders Markdown/HTML changelogs with PR links, 🤖 AI disclosure, and 🏆 Release MVP.
Patch Manifests & Tag
Updates versions across 15 ecosystems, creates a single release commit & pushes the Git tag.
Build, Publish, Release & Notify
Builds .deb/.rpm, pushes to OCI/Docker/npm/PyPI/Crates, creates forge releases, comments on PRs & notifies ChatOps.
46 Official Plugins — Ready for Every Stack
Install any plugin via semrel plugin install @semrel/<name>. Every plugin ships as a Cosign-signed multi-arch binary and GHCR container image.
Validate CI/CD environments & branch gates
@semrel/condition-github-actions GHES@semrel/condition-gitlab-ci@semrel/condition-gitea-actions@semrel/condition-bitbucket-pipelines NEW@semrel/condition-circleci NEW@semrel/condition-genericInspect commit history & compute SemVer bump
Changelogs, AI disclosure & contributor MVPs
Stamp versions across 15 ecosystems before tagging
@semrel/updater-go@semrel/updater-npm@semrel/updater-cargo@semrel/updater-python@semrel/updater-docker@semrel/updater-helm@semrel/updater-maven@semrel/updater-gradle@semrel/updater-nuget@semrel/updater-composer NEW@semrel/updater-pubspec NEW@semrel/updater-zig NEW@semrel/updater-homebrew@semrel/updater-terraform@semrel/updater-replace NEWBuild distributable system packages
Publish packages & containers to registries
@semrel/publisher-oci@semrel/publisher-docker@semrel/publisher-npm NEW@semrel/publisher-pypi NEW@semrel/publisher-crates NEW@semrel/publisher-generic-httpGit forges, releases, assets & auto PR comments
@semrel/provider-github GHES + PR@semrel/provider-gitlab MR Comment@semrel/provider-gitea PR Comment@semrel/provider-bitbucket PR Comment@semrel/provider-gitChatOps notifications, issue trackers & shell hooks
@semrel/hook-slack@semrel/hook-teams@semrel/hook-discord NEW@semrel/hook-matrix@semrel/hook-jira@semrel/hook-email@semrel/hook-exec NEW@semrel/hook-gitplugin3 Steps to a Fully Automated Release Pipeline
Complete with IDE JSON Schema autocomplete, pre-flight doctor checks, and zero-risk --dry-run.
Install & Pin Plugins
go install github.com/SemRels/semrel/cmd/semrel@latest
semrel config init
semrel plugin install @semrel/condition-github-actions
semrel plugin install @semrel/generator-changelog-md
semrel plugin install @semrel/updater-go
semrel plugin install @semrel/provider-github
semrel plugin install @semrel/hook-discordConfigure (.semrel.yaml)
# yaml-language-server: $schema=https://registry.semrel.io/schemas/core/v1.json
tagPrefix: v
commit_changelog: false
branches:
- name: main
- name: next
prerelease: beta
plugins:
- uses: @semrel/condition-github-actions
phase: condition
- uses: @semrel/generator-changelog-md
phase: pre-tag
args:
keep_releases: "10"
ai_disclosure: "true"
- uses: @semrel/updater-go
phase: pre-tag
args:
file: internal/version/version.go
- uses: @semrel/provider-github
phase: release
args:
token: '${env.GITHUB_TOKEN}'
comment_on_prs: "true"Verify & Ship
# 1. Pre-flight check (config, plugins, tokens)
semrel doctor
# 2. Validate commit messages
semrel commitlint --commit-msg-file .git/COMMIT_EDITMSG
# 3. Preview without side effects
semrel release --dry-run
# 4. Ship production release (or monorepo: semrel workspace release)
semrel release --github-outputThe Road to semrel v1.0.0
Relentless execution focused on stability, ecosystem breadth, and enterprise readiness.
Zero-Dependency Core & Subprocess Runtime
Static Go binary without Node.js dependencies, subprocess plugin runtime, and semrel doctor pre-flight diagnostics.
.semrel.lock, Air-Gap & 8-Category Pipeline
SHA256-pinned lockfiles, air-gap plugin restore, monorepo workspaces, plus dedicated Generator, Packager, and Publisher categories.
Scope Rules, Contributor Metadata & AI Transparency
Scope-based bump rules, SEMREL_CONTRIBUTORS for MVP shoutouts, AI co-author disclosure badges, and registry download analytics.
Cosign v3, GHES, Workspace Scopes & 46 Official Plugins
Sigstore Cosign v3 (--bundle), env-var interpolation, monorepo sharedPaths/ignorePaths & package-scoped commits, automatic .gitignore generation, PR/MR release comments, GHES support, and 46 official plugins.
Ecosystem & Enterprise Adopter Expansion
Community plugin expansion, OIDC trusted publishing across registries, richer release analytics, and enterprise reference blueprints.
v1.0 Long-Term Stability & Enterprise Guarantees
Long-term stability guarantees for Plugin Protocol v1, Core JSON Schema v1, and backward-compatible lockfile specifications.
Join the Movement — Help Us Build the Open-Source Release Standard
semrel is an independent open-source project created by Markus Waldheim (@mwaldheim) and Thomas Boerger (@tboerger). No VC lock-in, no artificial enterprise paywalls — built by engineers, for engineers.
Build & Submit Plugins
Write a new updater, publisher, or hook in Go, Rust, Python, or any language and publish it to registry.semrel.io.
Start Plugin Guide →Good First Issues & Core
Whether you are a seasoned Go engineer or a first-time contributor, we mentor every PR. Grab a labeled Good First Issue!
Browse Good First Issues →Discord Community & Release Ping
Join our official Discord server! Get direct support from the maintainers, connect with adopters, and receive automatic Release Ping notifications.
Join Discord Server →Docs, Blueprints & CI Templates
Help us reach more engineering teams with CI/CD recipes, migration guides, translations, or share your setup in GitHub Discussions.
Contribute to Docs Repo →