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

  1. Install the tool via a different backend (source build: cargo, go, npm, etc.)
  2. Pin a version that predates the no_asset declaration if binaries existed earlier
  3. Check the upstream project's releases to confirm no binaries are published
  4. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4bb5eb05b05f7cee. Report an issue: GitHub.