henrygd/beszel · error

missing asset containing

Error message

missing asset containing ${suffix}

What it means

findAssetBySuffix scans a GitHub release's asset list for one whose filename ends with the given suffix (e.g. a GOOS/GOARCH triple like '_linux_amd64.tar.gz'). If no asset matches, it returns this error, meaning the release has no build for the requested platform.

Solutions

  1. Verify the platform is published on the target GitHub release's Assets list
  2. Update to a version whose release naming matches the suffix generator
  3. Manually download and replace the binary if auto-update can't find the asset
  4. If using a fork/mirror, ensure it publishes assets with the same naming scheme

Example fix

// before: checking update on unsupported arch
_, err := updater.Update(ctx) // findAssetBySuffix fails
// after: verify the asset exists first
release, _ := ghupdate.GetLatestRelease(ctx, "henrygd", "beszel")
for _, a := range release.Assets { log.Println(a.Name) } // confirm suffix exists
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm the asset exists before updating
release, _ := ghupdate.GetLatestRelease(ctx, owner, repo)
wanted := "beszel-agent_" + runtime.GOOS + "_" + runtime.GOARCH
for _, a := range release.Assets {
    if strings.Contains(a.Name, wanted) { return } // ok
}
log.Fatalf("no published asset for %s", wanted)

Try / catch

asset, err := findAssetBySuffix(release.Assets, suffix)
if err != nil {
    return fmt.Errorf("auto-update unsupported for this platform: %w", err)
}

Prevention

When it happens

Trigger: update() looks up the release asset matching the current OS/arch but the release JSON contains no asset name with that suffix — e.g. suffix computed as 'beszel-agent_linux_arm64.tar.gz' but the release only publishes different naming.

Common situations: Self-updating on a niche platform (riscv64, freebsd/arm) that upstream doesn't publish; a renamed asset scheme in a newer release version; querying a forked or mirror release with partial assets; network/proxy serving a truncated asset list.

Related errors


AI-assisted analysis of henrygd/beszel@b38fb7dafa (2026-08-31). Data as JSON: /api/errors/724fa8a9e020a90d. Report an issue: GitHub.

Appendix: source

Thrown at internal/ghupdate/release.go:36

	Tag       string          `json:"tag_name"`
	Published string          `json:"published_at"`
	Url       string          `json:"html_url"`
	Body      string          `json:"body"`
	Assets    []*releaseAsset `json:"assets"`
	Id        int             `json:"id"`
}

// findAssetBySuffix returns the first available asset containing the specified suffix.
func (r *release) findAssetBySuffix(suffix string) (*releaseAsset, error) {
	if suffix != "" {
		for _, asset := range r.Assets {
			if strings.HasSuffix(asset.Name, suffix) {
				return asset, nil
			}
		}
	}

	return nil, errors.New("missing asset containing " + suffix)
}

View on GitHub (pinned to b38fb7dafa)