Skip to content
Dan Riddell edited this page Sep 13, 2026 · 3 revisions

letsgo

A release tool for Go. Only Go.

Status: early. letsgo releases itself, and reproducibility is proven across Linux, macOS and Windows on every push.

It builds your Go project, refuses to ship it if it's wrong, publishes it reproducibly, and lets anyone prove afterwards that the binaries match the source.

GoReleaser is a distribution tool. letsgo is an integrity tool. GoReleaser's job is getting your software to many places — Homebrew, Docker, deb, rpm, snap, AUR, Discord. It's very good at that. letsgo's job is proving a release is what it claims to be and never leaving it half-finished. The two overlap on "makes a GitHub release," but they optimise different things. If you need deb packages, snap or a dozen package managers, use GoReleaser for that repo.

Documentation

Page Description
Commands Every verb, and what each one is for
Configuration Zero config, letsgo.mod, and the derived defaults
Reproducibility Why builds are deterministic, and how verify uses it
Publishing install.sh, Homebrew taps, container images and the SBOM
GitHub Action Running letsgo on a runner, and why the version is pinned
Self-update Verified self-update for any binary letsgo released
Migrating from GoReleaser What to delete, what to keep, what to expect
Design The full rationale, including the alternatives rejected
Roadmap Milestones, open questions, and how this should change

Install

go install github.com/danielriddell21/letsgo/cmd/letsgo@latest

Or from the release itself, using the installer letsgo generated for it:

curl -fsSL https://github.com/danielriddell21/letsgo/releases/latest/download/install.sh | sh

That script carries each archive's SHA-256, so it fails rather than installing a substituted archive. See Publishing.

Links

Clone this wiki locally