jdx/mise · error
no asset released
Error message
no asset released
What it means
The aqua registry can mark a package as having no released assets via `no_asset: true`. validate() checks this before attempting any install and bails with 'no asset released', meaning the registry entry itself declares that no downloadable asset exists for this package.
Source
Thrown at src/backend/aqua.rs:5000
if let Some("github_tag") = pkg.version_source.as_deref() {
// Tags don't have created_at timestamps or a prerelease flag
let versions = github::list_tags(&format!("{}/{}", pkg.repo_owner, pkg.repo_name)).await?;
return Ok(versions.into_iter().map(|v| (v, None, None)).collect());
}
let repo = format!("{}/{}", pkg.repo_owner, pkg.repo_name);
let releases = github::list_releases_including_prereleases(&repo).await?;
Ok(releases
.into_iter()
.map(|r| {
let released_at = r.released_at().to_string();
(r.tag_name, Some(released_at), Some(r.prerelease))
})
.collect())
}
fn validate(pkg: &AquaPackage, version: &str) -> Result<()> {
if pkg.no_asset.unwrap_or(false) {
bail!("no asset released");
}
if let Some(message) = &pkg.error_message {
bail!("{}", message);
}
if !is_platform_supported(&pkg.supported_envs, os(), arch()) {
bail!(
"unsupported env: {}/{} (supported: {:?})",
os(),
arch(),
pkg.supported_envs
);
}
match pkg.package_type() {
AquaPackageType::Cargo => {
bail!(
"package type `cargo` is not supported in the aqua backend. Use the cargo backend instead{}.",
pkg.crate_name
.as_deref()View on GitHub (pinned to afd2eddd3a)
Solutions
- Install the tool via a different backend (source build: cargo, go, npm, etc.)
- Pin a version that predates the no_asset declaration if binaries existed earlier
- Check the upstream project's releases to confirm no binaries are published
- Update the aqua registry entry or file an issue upstream to publish release assets
Example fix
// before [tools] aqua:owner/source-only-tool = "latest" // after — build from source instead [tools] cargo:source-only-tool = "latest"
Defensive patterns
Strategy: fallback
Validate before calling
// check the package declares releasable assets before using aqua:
const pkg = await fetchAquaRegistryEntry(pkgName);
if (pkg.no_asset === true) {
console.warn(`${pkgName} declares no_asset; use a source-build backend`);
} Try / catch
try {
await $`mise use aqua:owner/repo`;
} catch (e) {
if (String(e).includes("no asset released")) {
await $`mise use cargo:${crateName}`; // build from source instead
} else throw e;
} Prevention
- Check the upstream project's GitHub releases page for actual binaries before pinning via aqua
- Prefer source-build backends (cargo:, go:, npm:) for projects that don't publish release artifacts
- Pin versions known to ship binaries when a project stopped releasing them
When it happens
Trigger: Running `mise install`/`mise use` for an aqua-registered tool whose AquaPackage has no_asset=true (src/backend/aqua.rs:5000), regardless of requested version or platform.
Common situations: The upstream project stopped shipping binaries (source-only releases); the registry entry was added preemptively before any release; the tool was renamed or retired.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- unexpected character: {}
- expected closing parenthesis
- conflicting aqua var `{key}`: use only one spelling
- No lockfile URL found for {} on platform {} (--locked mode r
- github_content package requires `path`
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/4bb5eb05b05f7cee.
Report an issue: GitHub.