-
v1.2.0
Stablereleased this
2026-09-06 14:17:09 -06:00 | 2 commits to main since this releasev1.2.0
Highlights
- Multi-arch Docker images — images are now published for linux/amd64 and linux/arm64 at
git.w33ble.com/w33ble/lagom, tagged with the exact version, rolling major tag (v1), andlatest. Native cross-compilation per platform — no QEMU, no performance trade-off. - Multi-arch images are also built on every
mainpush as:next.
Changes
- feat: auto-skip self-recreate — lagom skips recreating its own container with a logged/notification outcome instead of a manual
lagom.no-recreate=truelabel being required - fix: replace deprecated Docker SDK client constructor (
NewClientWithOpts→New) - ci: tagged releases (
v*) now publish binaries + a Forgejo release + multi-arch Docker image; PRs rungo test;mainpushes build thenextimage - docs: README install instructions fixed (previously pointed at a nonexistent GitHub repo), Go requirement corrected to 1.26+
Binaries
Pre-built binaries for linux/darwin on amd64/arm64 are attached to this release, with version metadata baked in via ldflags.
Notes
- A CI bug pushed the rolling tag as
vv1instead ofv1for this release; the workflow is fixed (post-tag), and thev1tag was minted manually from the same images. The binaries andv1.2.0/latestimage tags were unaffected.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Multi-arch Docker images — images are now published for linux/amd64 and linux/arm64 at
-
v1.1.1 Stable
released this
2026-08-27 09:52:35 -06:00 | 11 commits to main since this releaseFixes
fix(cmd): prevent downgrade when live digest matches remote tag
When the running container's digest matched the current remote tag (e.g.
manual update to v1.1.0, SHA5f75b09e43b2) but the tag hadn't aged
enough for the policy,updatePlanselected the previous eligible historic
digest (v1.0.0, SHA7f6c239cd49e) and pulled it — actively downgrading the
container. Added guard: ifliveDigest == remoteInfo.Digest, skip update
with"already at latest"instead of falling back to an older observed
digest.
Infrastructure
Dockerfile: injectVERSION,COMMIT,DATEbuild args; add label-schema
labels (org.label-schema.version,.commit,.build-date) for image
provenance tracking.AGENTS.md: documentmisetasks (build,build-dist,build-docker,
build-all) and mandatoryeval "$(mise activate zsh)"activation.
Verification
mise run buildpasses.- BoltDB state verified:
digestsbucket no longer overwritten by fallback
pull;v1retains current SHA (5f75b09...) instead of reverting to
previous (7f6c239...).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.1.0 Stable
released this
2026-08-24 12:22:46 -06:00 | 13 commits to main since this releaseChangelog
[v1.1.0] — 2026-08-22
All notable changes since v1.0.0. Supply-chain-safety posture is unchanged: lagom only ever pulls digests it has previously observed, regardless of feature.
Added
lagom inspect [image]— lists every digest lagom has recorded for a tracked image from local BoltDB state, marking the digest currently running.--skip-first-runforlagom daemon(alsoskip_first_runconfig /LAGOM_SKIP_FIRST_RUNenv).
Changed
- Age policy is now first-seen based (
FirstSeen). updatepulls the newest eligible observed digest.updateplans running containers only.--forcestays observed-only.statusno longer queries the registry.- Daemon uses one container fetch per cycle.
Fixed
- Deterministic update decisions on first-seen ties.
updatereports "already at latest" correctly.- Keeps newer images when pulled replacement is older.
- Fails loudly on container-list errors.
statusverifies local digest against Docker daemon.- Health-server and store-close errors are logged.
Removed
inspectsize column removed.- Dead errcheck exclusions dropped.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.0.0 Stable
released this
2026-08-22 16:50:20 -06:00 | 41 commits to main since this releaseFirst release of lagom — a supply-chain-safe Docker image updater. It watches the digests of images running in your containers, records when each digest was first seen, and updates containers to newer digest-addressed images only after they've satisfied a minimum-age policy. Nothing is ever pulled by a mutable tag; updates are always addressed by digest.
Features
Digest tracking
lagom trackinspects running containers (or theimagesconfig list) and records observed image digests with first-seen/last-seen timestamps in BoltDB ($LAGOM_CONFIG_PATH/state.db).- Registry inspection archives remote digest history per ref; history is retained for a 5x min-age window.
Age-gated updates
lagom updateadvances each image to the newest observed digest that satisfiesmin_age_days, pulled by digest with up tomax_pull_candidatesfallbacks.- Eligibility is judged from when lagom first observed a digest, cross-referenced against the registry build date so a backdated timestamp cannot make an unpulled digest eligible early.
- Historic-digest fallback keeps updates working when the remote tag is too new or unreachable.
--forcebypasses the age gate;--debugemits a pull/retag/prune/recreate audit trail.
Daemon mode
lagom daemonruns periodic track+update cycles, handling SIGHUP/SIGTERM/SIGINT gracefully.- Health endpoint on :8080 surfaces daemon errors for monitoring (bound to all interfaces so Docker health checks work).
- Optional notifications via shoutrrr (ntfy, SMTP, webhook, etc.), with
LAGOM_SERVER_NAMEto identify the sender.
Container recreation
--recreaterecreates containers that were running an updated image; thelagom.no-recreatelabel opts individual containers out, andlagom.enable=falsedisables a container entirely.
Configuration
- YAML config with
LAGOM_*environment variable overrides for every field; values are validated (minimums clamped to 1).
Build & packaging
- Version/commit/date injected at build time (
git describe); Dockerfile for running in a container; cross-compiled dist binaries for linux/darwin on amd64/arm64.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads