inconshreveable/go-update
inconshreveable/go-update has 2,270 GitHub stars and 256 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 21:13 UTC. Last push 2022-06-24.
Build self-updating Golang programs
What you can do
- Cross platform support (Windows too!)
- Binary patch application
- Checksum verification
- Code signing verification
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originalgo-update: Build self-updating Go programs 
Package update provides functionality to implement secure, self-updating Go programs (or other single-file targets) A program can update itself by replacing its executable file with a new version.
It provides the flexibility to implement different updating user experiences like auto-updating, or manual user-initiated updates. It also boasts advanced features like binary patching and code signing verification.
Example of updating from a URL:
import (
"fmt"
"net/http"
"github.com/inconshreveable/go-update"
)
func doUpdate(url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
err := update.Apply(resp.Body, update.Options{})
if err != nil {
// error handling
}
return err
}
Features
- Cross platform support (Windows too!)
- Binary patch application
- Checksum verification
- Code signing verification
- Support for updating arbitrary files
equinox.io
equinox.io is a complete ready-to-go updating solution built on top of go-update that provides:
- Hosted updates
- Update channels (stable, beta, nightly, ...)
- Dynamically computed binary diffs
- Automatic key generation and code
- Release tooling with proper code signing
- Update/download metrics
API Compatibility Promises
The master branch of go-update is not guaranteed to have a stable API over time. For any production application, you should vendor
your dependency on go-update with a tool like git submodules, gb or govendor.
The go-update package makes the following promises about API compatibility:
- A list of all API-breaking changes will be documented in this README.
go-updatewill strive for as few API-breaking changes as possible.
API Breaking Changes
- Sept 3, 2015: The
Optionsstruct passed toApplywas changed to be passed by value instead of passed by pointer. Old API at28de026. - Aug 9, 2015: 2.0 API. Old API at
221d034orgopkg.in/inconshreveable/go-update.v0.
License
Apache
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,227 starspublic-apis/public-apis
A collective list of free APIs
497,462 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
445,528 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,228 stars