jdx/mise · error · eyre::Report
No matching SwiftPM artifact bundle found for {}
Error message
No matching SwiftPM artifact bundle found for {} What it means
The spm backend tried to install a SwiftPM artifact bundle from the release assets but found no match, and source build is not allowed: `artifactbundle = true` (Required mode) or an `artifactbundle_asset` is configured, which makes the bundle mandatory. Instead of silently falling back to a source build, mise aborts.
Source
Thrown at src/backend/spm.rs:280
artifactbundle_mode,
Settings::get().spm.artifactbundle_only,
&tv.version,
)? {
let artifactbundle_required = opts.requires_artifactbundle(artifactbundle_mode);
match self
.try_install_artifactbundle(
ctx,
&mut tv,
&provider,
&repo,
revision.as_str(),
&opts,
)
.await
{
Ok(true) => return Ok(tv),
Ok(false) if artifactbundle_required => {
bail!(
"No matching SwiftPM artifact bundle found for {}",
repo.shorthand
);
}
Ok(false) if Settings::get().spm.artifactbundle_only => {
bail!(
"No matching SwiftPM artifact bundle found for {}, but spm.artifactbundle_only is set",
repo.shorthand
);
}
Ok(false) => {}
Err(err) if artifactbundle_required => return Err(err),
Err(err) if Settings::get().spm.artifactbundle_only => return Err(err),
Err(err) => {
debug!(
"SwiftPM artifact bundle install failed, falling back to source build: {err:?}"
);
}View on GitHub (pinned to 6f52dcdf99)
Solutions
- Drop `artifactbundle = true` (and any artifactbundle_asset) to let mise fall back to building from source
- Bump to a release that actually ships an .artifactbundle.zip for your platform (check the release's asset list)
- Fix the artifactbundle_asset name to exactly match an existing asset ending in .artifactbundle.zip
- If you must stay on this version without bundles, accept the source build by removing the required mode
Example fix
# before [tools."spm:apple/swift-format"] version = "0.50.0" artifactbundle = true # after [tools."spm:apple/swift-format"] version = "600.0.0" artifactbundle = true
Defensive patterns
Strategy: fallback
Validate before calling
gh release view <tag> --repo owner/repo --json assets -q '.assets[].name' | grep -i artifactbundle.zip # confirm a bundle exists for your platform before pinning + artifactbundle = true
Try / catch
mise install "spm:owner/repo@1.2.3" || mise install "spm:owner/repo@1.3.0" # bump to a release with bundles, or drop artifactbundle=true for source fallback
Prevention
- Check the release asset list before setting artifactbundle = true on a pinned version
- Don't require bundles for cross-platform configs; Linux releases often lack macOS bundles
- Set artifactbundle = true only on versions you've verified ship bundles
When it happens
Trigger: `[tools."spm:owner/repo"] version = "1.2.3", artifactbundle = true` where the 1.2.3 GitHub release has no *.artifactbundle.zip asset matching the platform; or `artifactbundle_asset = "Repo.artifactbundle.zip"` naming an asset that does not exist in the release.
Common situations: A project ships bundles only for macOS while you run Linux, older releases predate artifact bundles, asset naming changed, or a typo'd artifactbundle_asset.
Related errors
- multiple SwiftPM artifact bundles found: {}. Set artifactbun
- No matching SwiftPM artifact bundle found for {}, but spm.ar
- SwiftPM artifact bundles require a release version; {display
- artifactbundle_asset must end with .artifactbundle.zip, got
- artifactbundle must be true, false, 1, or 0, got {value}
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/4b69839985808dde.
Report an issue: GitHub.