jdx/mise · error · eyre::Report
multiple SwiftPM artifact bundles found: {}. Set artifactbun
Error message
multiple SwiftPM artifact bundles found: {}. Set artifactbundle_asset to choose one What it means
When no explicit artifactbundle_asset is configured, select_artifactbundle_asset looks for exactly one *.artifactbundle.zip in the release. If multiple match (e.g. macOS and Linux bundles, or x64/arm64 splits), mise cannot choose and asks you to disambiguate.
Source
Thrown at src/backend/spm.rs:942
bail!("artifactbundle_asset must end with .artifactbundle.zip, got {name}");
}
return assets
.into_iter()
.find(|a| a.name == name)
.map(Some)
.ok_or_else(|| {
eyre::eyre!("artifactbundle_asset not found in release assets: {name}")
});
}
let candidates = assets
.into_iter()
.filter(|a| is_artifactbundle_zip(&a.name))
.collect::<Vec<_>>();
match candidates.len() {
0 => Ok(None),
1 => Ok(candidates.into_iter().next()),
_ => bail!(
"multiple SwiftPM artifact bundles found: {}. Set artifactbundle_asset to choose one",
candidates
.into_iter()
.map(|a| a.name)
.collect::<Vec<_>>()
.join(", ")
),
}
}
fn is_artifactbundle_zip(name: &str) -> bool {
name.to_lowercase().ends_with(".artifactbundle.zip")
}
#[derive(Debug, Deserialize)]
struct SwiftTargetInfo {
target: SwiftTarget,
}View on GitHub (pinned to 6f52dcdf99)
Solutions
- Set artifactbundle_asset to the exact bundle filename for your platform from the release's assets list
- If you want cross-machine configs, use platform-specific config (mise.$OSTYPE.toml / [tools] per-platform sections) to pick the right bundle per host
Example fix
# before [tools."spm:foo/bar"] version = "2.0.0" # after [tools."spm:foo/bar"] version = "2.0.0" artifactbundle_asset = "Bar-2.0.0-macos.artifactbundle.zip"
Defensive patterns
Strategy: validation
Validate before calling
gh release view <tag> --repo owner/repo --json assets -q '[.assets[].name | select(endswith("artifactbundle.zip"))] | length' # >1 means you must set artifactbundle_asset Prevention
- Releases with multiple bundles always need an explicit artifactbundle_asset
- Use per-platform mise config files to pick the right bundle per OS/arch
- Watch for new bundles added mid-version when upgrading
When it happens
Trigger: Installing an spm tool whose release contains two or more .artifactbundle.zip assets without setting artifactbundle_asset.
Common situations: Projects that publish per-platform or per-architecture bundles; the auto-selection only works when the release has a single bundle.
Related errors
- No matching SwiftPM artifact bundle found for {}
- 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/236ae50a46309543.
Report an issue: GitHub.